① if语句与条件编译
if(变量名
#ifdef
宏定义变量
||
变量名
#endef
)
就是说如果你的宏定义变量被宏定义了,那么你的||变量名就参与编译否则根本就不参与编译,就像没有这段代码一样.
② C语言中条件编译和If语句之间的差别,各适用于什么情况
条件编译是C语言中预处理部分的内容,它是编译器编译代码时最先处理的部分,
条件编译里面有判断语句,比如
#if
、#else
、#elif
及
#endif
它的意思是如果宏条件符合,编译器就编译这段代码,否则,编译器就忽略这段代码而不编译,如
#define
A
0
//把A定义为0
#if
(A
>
1)
printf("A
>
1");
//编译器没有编译该语句,该语句不生成汇编代码
#elif
(A
==
1)
printf("A
==
1");
//编译器没有编译该语句,该语句不生成汇编代码
#else
printf("A
<
1");
//编译器编译了这段代码,且生成了汇编代码,执行该语句
#endif
而
if
语句则不然,if
是
C
语言中的关键字,它根据表达式的计算结果来觉定执行那个语句,它里面的每个分支都编译了的,
如
#define
A
0
if
(A
>
1)
printf("A
>
1");
//编译器编译该语句,但因为A
==
0
未执行
else
if(A
==
1)
printf("A
==
1");
//编译器编译该语句,但因为A
==
0
未执行
else
printf("A
<
1");
//编译器编译该语句,因为A
==
0
故执行
所以
简单地讲,条件编译是根据
宏条件
选择性地编译语句,它是编译器在编译代码时完成的;
条件语句是根据条件表达式选择性地执行语句,它是在程序运行时进行的。
③ 汇编语言 if与.if的区别
在汇编中if和搜乎颂.if是两个伪指令 - - ,不能通用
.if就是判断,if就是条件编世郑译
.if会生成一定顷亩的指令
if是选择编译一部分指令
④ 条件编译问题
if语句是确定要编译的内容,在运行时判断,比如:
if(a>b)
printf("A大于B");
else
printf("A小于B");
条件编译可不是在运行阶段执行的,是为了某种需要(特别是跨平台的需要),只在编译器扫描源代码时,确定用哪一部分。
举个例子,比如,一般LINUX多线程程序叫做pthread_create,而WINDOWS启动多线程的程序是CreateThread,为了保证同一个程序可以跨平台运行,我们这样书写程序:
#ifdef WIN32 //如果是WINDOWS系统
#include <windows.h>
#define THREAD CreateThread
#else //如果是LINUX系统
#include <pthread.h>
#define THREAD pthread_create
#endif