Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 키워드 완벽 정리: 예약어의 개념부터 전체 목록까지

C++ 키워드란 무엇인가?

키워드(keyword)는 컴파일러가 그 의미를 이미 정의해 놓은 특수한 단어를 말합니다. 따라서 이러한 키워드는 프로그래머가 변수명이나 함수명 등의 식별자(identifier)로 사용할 수 없습니다. 키워드는 예약어(reserved word)사전 정의 식별자(predefined identifier)의 집합으로 구성됩니다.

여기서 사전 정의 식별자란 컴파일러에 의해 의미가 정의되어 있지만, 사용자가 그 의미를 변경할 수 있는 식별자를 의미합니다. 반면 예약어는 절대 다른 용도로 사용할 수 없습니다.

예약어와 사전 정의 식별자의 차이

간단한 예를 들어 보겠습니다. 여러분은 main 함수 내부에 main이라는 이름의 변수를 선언하고, 값을 초기화한 뒤 출력하는 것이 가능합니다(물론 이것이 실제로 가능하다는 것을 확인하기 위한 목적으로만 사용하세요!). 하지만 else라는 이름으로 변수를 선언하는 것은 불가능합니다.

그 차이는 바로 else예약어인 반면, main은 단지 사전 정의 식별자일 뿐이라는 점입니다.

C++ 예약어의 구성

C++에는 총 95개의 예약어가 있으며, 이들은 편의상 몇 가지 그룹으로 나눌 수 있습니다.

  • C 언어에서 계승된 예약어 (32개): C 프로그래밍 언어에 이미 존재하던 예약어로, C++로 넘어온 것들입니다.
  • C++에서 새로 추가된 예약어 (30개): C에는 없었으며, C++ 프로그래밍 언어에 새롭게 도입된 예약어들입니다.
  • 연산자 대체 표기용 예약어 (11개): 표준 ASCII 문자 집합을 사용하는 환경에서는 필수적이지 않지만, 일부 C++ 연산자에 대한 읽기 쉬운 대안을 제공하고, C++에 필요한 문자가 없는 문자 집합으로도 프로그래밍할 수 있도록 추가된 예약어들입니다(예: and, or, xor 등).

C++ 전체 예약어 목록

아래 표는 C++의 모든 예약어를 정리한 것입니다. 괄호 안의 표기는 해당 예약어가 도입된 시점 또는 기술 사양(TS)을 나타냅니다.

alignas (C++11부터)
double
reinterpret_cast
alignof (C++11부터)
dynamic_cast
requires (C++20부터)
and
else
return
and_eq
enum
short
asm
explicit
signed
atomic_cancel (TM TS)
export(1)
sizeof(1)
atomic_commit (TM TS)
extern(1)
static
atomic_noexcept (TM TS)
false
static_assert (C++11부터)
auto(1)
float
static_cast
bitand
for
struct(1)
bitor
friend
switch
bool
goto
synchronized (TM TS)
break
if
template
case
import (모듈 TS)
this
catch
inline(1)
thread_local (C++11부터)
char
int
throw
char16_t (C++11부터)
long
true
char32_t (C++11부터)
module (모듈 TS)
try
class(1)
mutable(1)
typedef
compl
namespace
typeid
concept (C++20부터)
new
typename
const
noexcept (C++11부터)
union
constexpr (C++11부터)
not
unsigned
const_cast
not_eq
using(1)
continue
nullptr (C++11부터)
virtual
co_await (코루틴 TS)
operator
void
co_return (코루틴 TS)
or
volatile
co_yield (코루틴 TS)
or_eq
wchar_t
decltype (C++11부터)
private
while
default(1)
protected
xor
delete(1)
public
xor_eq
do
register(2)

참고 사항

(1)로 표시된 예약어는 특정 문맥에서만 특별한 의미를 갖거나, 표준화 과정에서 지원이 변경된 키워드입니다. (2)로 표시된 register는 C++17부터 더 이상 사용되지 않는(deprecated) 키워드입니다. 또한 atomic_cancel, atomic_commit, synchronized 등은 트랜잭셔널 메모리(TM) 기술 사양에 속하며, co_await, co_return, co_yield는 코루틴 기술 사양에서 도입되어 이후 C++20 표준에 포함되었습니다.