이 문서에서는 C 및 C++ 전처리기의 공식 문법에 대해 설명합니다. 전처리 지시문 및 연산자의 구문을 다룹니다. 자세한 내용은 전처리기 및 Pragma 지시문 및 키 _Pragma 워드를 __pragma 참조하세요.
문법 요약 정의
구문 정의에서 단말은 엔드포인트입니다. 다른 확인은 가능하지 않습니다. 단말에는 예약어와 사용자 정의 식별자의 집합이 포함됩니다.
비단말은 구문에서 자리 표시자입니다. 대부분 이 구문 요약의 다른 곳에서 정의되어 있습니다. 정의는 재귀적일 수 있습니다. 다음 비터미널은 C++ 언어 참조의 어휘 규칙 섹션에 정의되어 있습니다.
constant, constant-expression, identifier, keyword, operatorpunctuator
선택적 구성 요소는 첨자 opt로 나타냅니다. 예를 들어 다음 구문은 중괄호로 묶인 선택적 식을 나타냅니다.
{optexpression }
문서 규칙
규칙은 구문의 여러 구성 요소에 대해 여러 글꼴 특성을 사용합니다. 기호 및 글꼴은 다음과 같습니다.
| 특성 | Description |
|---|---|
nonterminal |
기울임꼴은 비터미널을 나타냅니다. |
#include |
굵게 표시된 터미널은 다음과 같이 입력해야 할 리터럴 예약어 및 기호입니다. 이 컨텍스트의 문자는 항상 대/소문자를 구분합니다. |
| opt | 뒤에 opt가 오는 비터미널은 항상 선택 사항입니다. |
| default typeface | 이 서체에서 설명하거나 나열된 집합의 문자를 C 문의 터미널로 사용될 수 있습니다. |
비터미널 뒤에 오는 콜론( : )은 정의를 지정합니다. 다른 정의는 별도의 줄에 나열됩니다.
코드 구문 블록에서 기본 서체의 이러한 기호에는 특별한 의미가 있습니다.
| 기호 | 설명 |
|---|---|
| [ ] | 대괄호는 선택적 요소를 묶습니다. |
| { | } | 중괄호는 세로 막대로 구분된 대체 요소를 둘러쌉니다. |
| ... | 이전 요소 패턴을 반복할 수 있음을 나타냅니다. |
코드 구문 블록에서 쉼표(,), 마침표(.), 세미콜론(;), 콜론(:), 괄호(( )), 큰따옴표(") 및 작은따옴표()는' 리터럴입니다.
전처리기 문법
control-line:
#define identifier token-stringopt
#defineidentifier ( identifieropt , ... , identifieropt ) token-string
#include "path-spec"
#include <path-spec>
#line digit-sequence "filename"opt
#undef identifier
#error token-string
#pragma token-string
constant-expression:
defined( identifier )
defined identifier
다른 상수 식
conditional:
if-part elif-partsopt else-partopt endif-line
if-part:
if-line text
if-line:
#if constant-expression
#ifdef identifier
#ifndef identifier
elif-parts:
elif-line text
elif-parts elif-line text
elif-line:
#elif constant-expression
else-part:
else-line text
else-line:
#else
endif-line:
#endif
digit-sequence:
digit
digit-sequence digit
digit: 다음 중 하나
0 1 2 3 4 5 6 7 8 9
token-string:
문자열 token
token:
keyword
identifier
constant
operator
punctuator
filename:
법적 운영 체제 파일 이름
path-spec:
Legal file path
text:
텍스트 시퀀스
참고 항목
C++ 언어 참조의 어휘 규칙 섹션에서 확장되는 비터미널은 constant다음과 operatorpunctuatorkeywordidentifierconstant-expression같습니다.