19 Preprocessing directives [cpp]

19.8 Predefined macro names [cpp.predefined]

The following macro names shall be defined by the implementation:

The following macro names are conditionally defined by the implementation:

The values of the predefined macros (except for __FILE__ and __LINE__) remain constant throughout the translation unit.

If any of the pre-defined macro names in this subclause, or the identifier defined, is the subject of a #define or a #undef preprocessing directive, the behavior is undefined. Any other predefined macro names shall begin with a leading underscore followed by an uppercase letter or a second underscore.

It is intended that future versions of this International Standard will replace the value of this macro with a greater value. Non-conforming compilers should use a value with at most five decimal digits.

The presumed source file name can be changed by the #line directive.

The presumed line number can be changed by the #line directive.