Preprocessor: #ifdef and #ifndef
The #ifdef (if defined) and #ifndef (if not defined) preprocessor commands are used to test if a preprocessor variable has been "defined". There are two common uses for this, with slightly different patterns.
Prevent multiple definitions in header files
When there definitions in a header file that can not be made twice, the code below should be used. A header file may be included twice other include files include it, or an included file includes it and the source file includes it again.
To prevent bad effects from a double include, it is common to surround the body in the include file with the following (where MYHEADER_H is replaced by a name that is appropriate for your program).
#ifndef MYHEADER_H #define MYHEADER_H . . . // This will be seen by the compiler only once #endif /* MYHEADER_H */
Turning debugging code off and on
Debugging code is necessary in programs, however, it is not usually appropriate to leave it in the delivered code. The preprocessor #ifdef commmand can surround the debugging code. If DEBUG is defined as below (probably in an include file) all debugging statement surrounded by the #ifdef DEBUG statement will be active. However, if it isn't defined, none of the statements will make it thru the preprocessor.
#define DEBUG . . . #ifdef DEBUG . . . // debugging output #endif
预处理器使用详解
本文介绍了预处理器命令 #ifdef 和 #ifndef 的用法,包括如何防止头文件被重复包含以及如何根据定义的存在与否来开关调试代码。
3984

被折叠的 条评论
为什么被折叠?



