Namespaces
Variants

Preprocessor

From cppreference.net
< c

전처리기는 번역 단계 4 에서 컴파일 전에 실행됩니다. 전처리의 결과는 단일 파일이며, 이 파일은 실제 컴파일러로 전달됩니다.

목차

지시문

전처리 지시문은 전처리기의 동작을 제어합니다. 각 지시문은 한 줄을 차지하며 다음과 같은 형식을 가집니다:

  • # 문자
  • 전처리 지시문 ( define , undef , include , if , ifdef , ifndef , else , elif , elifdef , elifndef (C23부터) , endif , line , embed (C23부터) , error , warning (C23부터) , pragma 중 하나) [1]
  • 인수 (지시문에 따라 다름)
  • 줄 바꿈

널 지시문( # 뒤에 줄 바꿈)은 허용되며 아무런 효과가 없습니다.

기능

전처리기는 다음과 같은 소스 파일 변환 기능을 갖습니다:

  • 조건부 소스 파일 일부 컴파일 (지시문 #if , #ifdef , #ifndef , #else , #elif , #elifdef , #elifndef (C23부터) #endif 으로 제어됨)
  • 텍스트 매크로 치환 및 식별자 연결/인용 (지시문 #define #undef , 그리고 연산자 # ## 으로 제어됨)
  • 다른 파일 포함 (지시문 #include __has_include 로 확인 (C23부터) 으로 제어됨)
  • 오류 또는 경고 (C23부터) 발생 (지시문 #error 또는 각각 #warning (C23부터) 으로 제어됨)

전처리기의 다음과 같은 측면들을 제어할 수 있습니다:

각주

  1. 이들은 표준에 의해 정의된 지시문들입니다. 표준은 다른 지시문들에 대한 동작을 정의하지 않습니다: 무시될 수도 있고, 유용한 의미를 가질 수도 있으며, 프로그램을 비정형으로 만들 수도 있습니다. 다른 경우에 무시되더라도 전처리가 완료되면 소스 코드에서 제거됩니다. 일반적인 비표준 확장은 #warning 지시문으로, 컴파일 중 사용자 정의 메시지를 출력합니다. (C23까지)

예제

참조문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 6.10 전처리 지시문 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 6.10 전처리 지시문 (p: 117-129)
  • C11 표준 (ISO/IEC 9899:2011):
  • 6.10 전처리 지시문 (p: 160-178)
  • C99 표준 (ISO/IEC 9899:1999):
  • 6.10 전처리 지시문 (p: 145-162)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 3.8 전처리 지시문

참고 항목

C 문서 for Predefined Macro Symbols
C 문서 for Macro Symbol Index
C++ 문서 for Preprocessor