是条件编译,是根据你是否定义了XXX_XXX这个宏,而使用不同的代码。一般.h文件里最外层的 #if !defined XXX_XXX #define XXX_XXX #endif 是为了防止这个.h头文件被重复include #ifdef的使用和#if defined()的用法一致 #ifndef又和#if !defined()的用法一致。 三、指令 用途 # 空指令,无任何效果 #include ...
#ifdef 判断某个宏是否被定义, 若已定义, 执行随后的语句 #ifndef 与#ifdef相反, 判断某个宏是否未被定义 #elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if #else 与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句, 相当...
#ifndef与#ifdef相反,判断某个宏是否未被定义,不能或运算 #elif若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if #else与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else #endif#if, #ifdef, #ifndef这些条件命令...
条件编译是通过预处理指令来实现的,可以使用`#ifdef/#endif`、`#ifndef/#endif`、`#if/#endif`等指令来进行条件判断。下面是一个使用`#ifdef`指令实现宏定...
#ifdef用于检查一个宏是否已经定义,#ifndef则用于检查一个宏是否未定义。如果条件成立,接下来的代码将被编译,否则将被忽略。#endif用于结束条件编译指令的范围。 3. #if / #elif / #else 这些宏定义指令也用于条件编译。#if用于判断一个常量表达式的值是否为真,如果为真,则接下来的代码将被编译。#elif用于在...
在上述代码中,我们定义了一个宏定义 CONCAT(a, b),它的作用是将 a 和 b 两个字符串拼接在一起。在 main 函数中,我们使用 CONCAT(x, y) 宏定义将两个字符串 x 和 y 拼接成了 xy,并输出它的值。宏定义中的条件编译 在宏定义中可以使用 #ifdef、#ifndef、#endif 等条件编译指令来根据条件选择性地...
#ifdef是一个预处理指令,用于判断指定的宏名是否已经定义。如果宏名已经定义,则执行源代码1,否则执行源代码2。 5. else指令 #ifdef指令的作用是在宏名已经定义的情况下执行源代码1,而else指令则是在宏名未定义的情况下执行源代码2。 6. endif指令 #ifdef和#else之间的源代码1和源代码2是通过#endif指令来结束...
* #ifdef的使用和#if defined()的用法基本一致 1 #ifdef MAX 2 ...code... 3 #endif 如果前面已经定义过MAX这个宏,就将code编译进去。 * #ifndef又和#if !defined()的用法基本一致 1 #ifndef MAX 2 ...code... 3 #endif 如果前面没有定义过MAX这个宏,就将code编译进去。
在C/C++中,我们可以使用#ifdef来保护宏定义,以防止多次定义或未定义。例如下面的代码使用#ifdef语句来保护一个宏定义: #ifndef SQUARE #define SQUARE(x) ((x)*(x)) #endif 这段代码的意思是,如果SQUARE宏没有被定义,那么就定义它。如果已经被定义了,那么就跳过这个定义。这样可以避免在多个文件中多次定义同...
1#ifdef_DEBUG2#defineDEBUGMSG(msg,date) printf(msg);printf(“%d%d%d”,date,_LINE_,_FILE_)3#else4#defineDEBUGMSG(msg,date)5#endif 20. 宏定义防止使用时错误用小括号包含。 例如: 1#defineADD(a,b) (a+b) 用do{}while(0)语句包含多语句防止错误 ...