C 키워드

키워드는 C 컴파일러에서 특별한 의미를 가진 단어입니다. 7번째 및 8번째 변환 단계에서는 식별자가 C 키워드와 같은 철자 및 대/소문자를 사용할 수 없습니다. 자세한 내용은 전처리기 참조의 변환 단계를 참조하세요. 식별자에 대한 자세한 내용은 식별자를 참조하세요.

표준 C 키워드

C 언어는 다음의 키워드를 사용합니다.

auto
break
case
char
const
continue
default
do
double
else
enum

extern
float
for
goto
if
inline1, a
int
long
register
restrict1, a
return

short
signed
sizeof
static
struct
switch
typedef
typeof
typeof_unqual
union
unsigned
void
volatile

while
_Alignas2, a
_Alignof2, a
_Atomic2, b
_Bool1, a
_Complex1, b
_Generic2, a
_Imaginary1, b
_Noreturn2, a
_Static_assert2, a
_Thread_local2, b

1 ISO C99에 도입된 키워드입니다.
2 ISO C11에 도입된 키워드입니다.
a Visual Studio 2019 버전 16.8부터 /std:c11 또는 /std:c17 컴파일러 옵션이 지정된 경우 이러한 키워드가 C로 컴파일된 코드에서 지원됩니다.
b Visual Studio 2019 버전 16.8부터 /std:c11 또는 /std:c17 컴파일러 옵션이 지정된 경우 이러한 키워드가 인식되지만 C로 컴파일된 코드의 컴파일러에서는 지원되지 않습니다.

키워드를 다시 정의할 수는 없습니다. 그러나 컴파일 전에 C 전처리기 지시문을 사용하여 키워드를 대체할 텍스트를 지정할 수 있습니다.

Microsoft 전용 C 키워드

ANSI 및 ISO C 표준을 사용하면 두 개의 선행 밑줄이 쳐진 식별자를 컴파일러의 구현용으로 예약할 수 있습니다. Microsoft 규칙은 이중 밑줄이 쳐진 Microsoft 전용 키워드 이름 앞에 있게 됩니다. 이들 단어는 식별자 이름으로 사용할 수 없습니다. 두 개의 밑줄을 사용하는 경우를 포함하여 식별자 명명 규칙에 대한 자세한 내용은 식별자를 참조하세요.

Microsoft C 컴파일러에서 다음 키워드 및 특수 식별자가 인식됩니다.

__asm5
__based3, 5
__cdecl5
__declspec5
__except5
__fastcall
__finally5

__inline5
__int165
__int325
__int645
__int85
__leave5
__restrict

__stdcall5
__try5
__typeof__
__typeof_unqual__
dllexport4
dllimport4
naked4
static_assert6
thread4

3__based 키워드의 경우 32 비트 및 64 비트 대상 컴파일에서 제한적으로 사용됩니다.
4 이들은 __declspec과 함께 사용되는 특수 식별자이며 다른 컨텍스트에서는 사용이 제한되지 않습니다.
5 이전 버전과의 호환성을 위해 이러한 키워드는 Microsoft 확장이 사용하도록 설정된 경우 두 개의 선행 밑줄과 단일 선행 밑줄 둘 다와 함께 사용할 수 있습니다.
6<assert.h>를 포함하지 않는 경우 Microsoft Visual C 컴파일러는 static_assert를 C11 _Static_assert 키워드에 매핑합니다.

Microsoft 확장은 기본적으로 사용하도록 설정됩니다. 이식 가능한 코드를 만들려면 컴파일 중에 /Za(언어 확장 사용 안 함) 옵션을 지정하여 Microsoft 확장을 사용하지 않도록 설정할 수 있습니다. 이 옵션을 사용하면 몇 가지 Microsoft 관련 키워드를 사용할 수 없습니다.

Microsoft 확장을 사용하면 위에 나열된 키워드를 프로그램에서 사용할 수 있습니다. 언어 표준을 준수하기 위해 대부분의 키워드(keyword) 선행 이중 밑줄이 있습니다. 네 가지 예외 사항인 dllexport, dllimport, nakedthread__declspec과 함께만 사용되며 선행 밑줄이 필요하지 않습니다. 이전 버전과의 호환성을 위해 나머지 키워드에는 밑줄 한 개가 옵니다.

참조

C 요소