#if还有一种用法可以代替#ifdef,即#if defined (VAR)代替#ifdef VAR #defined是一个预处理运算符(注意不要和#define搞混),如果它的参数是用#define定义过的,返回1,否则返回0,这种方法还可以和#elif一起使用 最后觉得这篇文章对你有帮助的读者给个点赞加关注吧!
* 正确的宏定义应该是:#define SQR(x) ((x)*(x)) * 所以,尽量使用小括号,将参数括起来。 */ 宏参数的连接 #include <stdio.h> #define STR(s) #s #define CONS(a,b) (int)(a##e##b) int main(void) { #ifdef STR printf(STR(VCK)); #endif #ifdef CONS printf("\n%d\n",CONS(2,...
#include <stdio.h>#defineMAX(x,y) (((x)>(y))?(x):(y))#defineMIN(x,y) (((x)<(y))?(x):(y))intmain(void) { #ifdef MAX//判断这个宏是否被定义printf("3 and 5 the max is:%d\n",MAX(3,5));#endif#ifdef MIN printf("3 and 5 the min is:%d\n",MIN(3,5));#endifr...
#ifdef指令表示如果预处理器已定义了后面的标识符LENGTH_H,则执行#else(如果有)、#endif指令之前的所有指令并编译C代码,如果预处理器未定义标识符LENGTH_H,且有#else指令,则执行#else和#endif指令之间的所有代码 注意:#else可以没有,但#endif必须存在 4.2 #ifndef指令 #ifndef指令和#ifdef指令的逻辑相反,#ifndef...
#define STR_DATA "123" #else #define STR_DATA "456" #endif int main(int argc,char **argv) { printf("STR_DATA=%s\n",STR_DATA); return 0; } 3. #ifndef、#ifdef 语句 #include #define AA #ifndef AA #error "你没有定义AA标识符" ...
二、宏定义:#define 格式一:普通宏定义 #define 宏名称 宏对应内容 //案例: #define PERSON 17 #define PRI printf("HelloWorld\n") 1. 2. 3. 4. 5. 格式二:带参宏定义 #define 宏名称(参数列表) 参数计算 //案例: #define ADD(x,y) x*y ...
1 #define 1.1 错误使用 #include<stdio.h>#defineSQR(x) (x*x)intmain(void){intb=3;#ifdefSQR//只需要宏名就可以了,不需要参数,有参数的话会警告printf("a = %d\n",SQR(b+2));#endifreturn0;}/* *首先说明,这个宏的定义是错误的。并没有实现程序中的B+2的平方 ...
#ifdef 标识符 语句序列① [#else 语句序列②] #endif 1. 2. 3. 4. 5. 功能:当标识符已被定义时(用#define定义),编译语句序列①,否则编译语句序列②。其中#else和语句序列②可有可无。 ifndef格式 #ifndef 标识符 语句序列① [#else 语句序列②] ...
第一种,#if-#elif-#else-#endif 运行结果:2 这种格式有点类似于判断结构中的 if-else 条件语句,但又有着本质的区别。一个是预处理指令,一个是编译语句,执行的阶段不同;编译器索要处理的代码量也不一样。第二种,#ifdef-#endif 运行结果:33 #ifdef 是用来判断程序中是否已经定义了宏。如果已经定义了...
#ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 其中#else部分也可以没有,即: #ifdef 程序段1 #denif 这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源...