次の方法で共有


プリプロセッサの文法の概要 (C/C++)

この記事では、C および C++ プリプロセッサの正式な文法について説明します。 プリプロセス ディレクティブと演算子の構文について説明します。 詳細については、プリプロセッサpragma ディレクティブ、および __pragma キーワードと_Pragma キーワードを参照してください。

文法の概要での定義

終端は構文定義内のエンドポイントです。 他の解決はありません。 終端には、予約語およびユーザー定義の識別子が含まれます。

非終端は構文内のプレースホルダーです。 ほとんどは、この構文概要の他の場所で定義されています。 定義は再帰的に行うことができます。 次の非終端は、C++ 言語リファレンスの「構文規則」での項で定義されます。

constantconstant-expressionidentifierkeywordoperatorpunctuator

省略可能な構成要素には添字 opt を付けます。 たとえば、次の構文では、省略可能な式が中かっこで囲まれています。

{optexpression }

ドキュメントの表記規則

構文規則では、構文のコンポーネントごとに異なるフォント属性を使用します。 シンボルとフォントは次のとおりです。

属性 説明
nonterminal 斜体は、非終端要素を示します。
#include 太字で示される終端要素は、示されたとおりに入力する必要があるリテラル予約語およびシンボルです。 このコンテキストの文字は、常に大文字と小文字が区別されます。
opt 後ろに opt が続く非終端要素は、常に省略可能です。
既定のタイプフェイス このタイプフェイスで記述されているか、示されているセット内の文字は、ステートメント内で終端要素として使用できます。

非終端要素に続くコロン ( : ) は、定義の説明を示します。 代替定義は別の行に示されます。

コード構文ブロックでは、既定の書体のこれらのシンボルには特別な意味があります。

Symbol 説明
[ ] 角かっこは、省略可能な要素を囲みます。
{ | } 中かっこは、縦棒で区切られた別の要素を囲みます。
... 前の要素パターンを繰り返すことができることを示します。

コード構文ブロックでは、コンマ (,)、ピリオド (.)、セミコロン (;)、コロン (:)、かっこ (( ))、二重引用符 (")、単一引用 (') はリテラルです。

プリプロセッサの文法

control-line:
#define identifier token-stringopt
#defineidentifier ( identifieropt , ... , identifieropt ) token-stringopt
#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:
 有効なファイル パス

text:
 テキストの任意のシーケンス

Note

次の非終端は、C++ 言語リファレンス: constantconstant-expressionidentifierkeywordoperatorpunctuator の「構文規則」の項で拡大されます。

関連項目

C/C++ のプリプロセッサ リファレンス