Descriptions of miscellaneous preprocessor extensions
The following pages reference information about the preprocessor extensions that are available in addition to the predefined symbols, pragma directives, and Standard C directives.
#include_next
Description
This is a variant of the #include directive. It searches for the named file only in the directories on the search path that follow the directory in which the current source file (the one containing the #include_next directive) is found.
NDEBUG
Description
This preprocessor symbol determines whether any assert macros you have written in your application shall be included or not in the built application.
If this symbol is not defined, all assert macros are evaluated. If the symbol is defined, all assert macros are excluded from the compilation. In other words, if the symbol is:
defined, the assert code will not be included
not defined, the assert code will be included
This means that if you write any assert code and build your application, you should define this symbol to exclude the assert code from the final application.
Note
The assert macro is defined in the assert.h standard include file.
In the IDE, the NDEBUG symbol is automatically defined if you build your application in the Release build configuration.
See also
__STDC_WANT_LIB_EXT1__
Description
If this symbol is defined to 1 prior to any inclusions of system header files, it will enable the use of functions from Annex K, Bounds-checking interfaces, of the C standard.
See also
Bounds checking functionality and C bounds-checking interface.
#warning
Syntax
#warning messagewhere message can be any string.
Description
Use this preprocessor directive to produce messages. Typically, this is useful for assertions and other trace utilities, similar to the way the Standard C #error directive is used. This directive is not recognized when the ‑‑strict compiler option is used.