#if 会把没有定义过的标准符视做为0, 如果没有定义DEBUG, 则 测试#if DEBUG 会失败,但#if !DEBUG会成功。 可以用宏来定义文件名: #if define(IA32) #define CPU_FILE “ia32.h” #elif defined(IA64) #deifine CPU_FILE “ia64.h” #elif defined(AMD64) #define CPU_FILE “amd64.h” #endif...
在使用上,其实#ifdef和#if defined(x)的用法一致,而[#ifndef]也和#if !defined(x)的用法一致。
defined用来测试某个宏是否被定义。defined(name): 若宏被定义,则返回1,否则返回0。可用于在一条判断语句中声明多个判别条件,例如: #ifdefined(VAX) && defined(UNIX) && !defined(DEBUG) #ifdef、#ifndef、#else、#endif #ifdef用于判断某个宏是否定义,和#ifndef功能正好相反,二者仅支持判断单个宏是否已经定义。
是一种宏的应用,在编译过程根据#if defined xxx...#else...选择是否编译此处内容,用法与if...else...相似。解释如下:if defined xxx { //如果对xxx进行了宏定义,则编译此处内容。} else { //如果没有对xxx进行宏定义,则编译此处内容。//与if...else...用法相同,else部分可以省略。...
ifdef(即“if defined”)是一种在预处理阶段进行条件判断的指令,用于判断某个宏定义是否存在。在C、C++等编程语言中,可以通过"#define"定义一个宏,然后使用ifdef指令来判断该宏是否已被定义。 例如,假设有如下代码片段: #define DEBUG #ifdef DEBUG printf("Debug information is enabled.\n"); #endif 上述代码...
ifdef DEBUG 测试语句 endif 意思是,如果DEBUG已经被定义,则编译时将以下语句编译,否则忽略,这样,只需要把#define DEBUG这一句注释掉,编译器就可以忽略所有测试语句,而只要去掉注释,编译器又会把这些测试语句编译,非常方便。ifndef类似,就是如果此标识符没有被定义过,则编译下列语句。还有疑问欢迎...
defined(DEBUG) #ifdef、#ifndef、#else、#endif #ifdef用于判断某个宏是否定义,和#ifndef功能正好相反,二者仅支持判断单个宏是否已经定义 #ifdef ABC #ifndef ABCD_H #if、#elif、#else、#endif #if可支持同时判断多个宏的存在,与常量表达式配合使用。常用格式如下: #if 常量表达式1 常量表达式可以是包含宏、...
这个#if defined它不管里面的“x”的逻辑是“真”还是“假”它只管这个程序的前面的宏定义里面有没有定义“x”这个宏,如果定义了x这个宏,那么,编译器会编译中间的…code…否则不直接忽视中间的…code…代码。 另外#if defined(x)也可以取反,也就用 #if !defined(x) ...
if !defined(_WIN32_WCE) && defined(_DEBUG)//如果编译环境是WINCE 并且是 debug 版本,出现在这个if - endif 块中的语句就会被编译,否则跳过.endif
运行库和MFC有两个版本,调试和发布,所以总是有两个版本的代码。