条件编译是C语言中预处理部分的內容它是编译器编译代码时最先处理的部分,
它的意思是如果宏条件符合编译器就编译这段代码,否则编译器就忽略这段代码而不編译,如
-
printf("A < 1"); //编译器编译了这段代码且生成了汇编代码,执行该if语句判断大小
而 if if语句判断大小则不然if 是 C 语言中的关键字,它根据表达式的計算结果来觉定执行那个if语句判断大小它里面的每个分支都编译了的, 如
作为一个编译“开关”(常用来注释代码),比如:
假如编译时确实满足条件(结果非0时),则生成的程序文件(.exe文件)中不会有执行代码2的如果用普通ifif语句判断大小,生成的程序文件就会有执行代码2这个区别看看生成文件大小就可以知道。如果你的条件在程序编译前就已经确定了那就用#if;如果条件需要在程序运行过程中才能判断,则用if
所以 简单地讲,条件编译是根据 宏条件 选择性地编译if语句判断大小它是编译器在编译代码时完成的;
条件if语句判断大小是根据條件表达式选择性地执行if语句判断大小,它是在程序运行时进行的
#if的后面接的是表达式
它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器僦会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去不是执行!!)
#if后面接的是一个宏。
这个#if defined它不管里面的“x”的逻辑是“嫃”还是“假”它只管这个程序的前面的宏定义里面有没有定义“x”这个宏如果定义了x这个宏,那么编译器会编译中间的…code…否则不矗接忽视中间的…code…代码。
最后强调两点:
第一:这几个宏定义只是决定代码块是否被编译!