Preprocessor Grammar

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

#define  identifier token-stringopt

# define  identifier[( identifieropt, ... , identifieropt )] token-stringopt

defined(  identifier )

defined  identifier

#include "path-spec"

#include <path-spec>

#line  digit-sequence  " filename "opt

# undef  identifier

#error  token-string

#pragma  token-string

conditional :
if-part elif-partsoptelse-partoptendif-line

if-part :
if-linetext

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-linetext

else-line :
#else

endif-line :
#endif

digit-sequence :
digit

digit-sequence digit

digit : one of
0 1 2 3 4 5 6 7 8 9

token-string :
String of tokens

token :
keyword

identifier

constant

operator

punctuator

filename :
Legal operating system filename

path-spec :
Legal file path

text :
Any sequence of text

System_CAPS_ICON_note.jpg Note

The following nonterminals are expanded in Appendix A, Grammar Summary, of the C++ Language Reference: constant, constant-expression, identifier, keyword, operator, and punctuator.

Grammar Summary (C/C++)

Show: