条件编译使用分析
Posted lianglianglu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条件编译使用分析相关的知识,希望对你有一定的参考价值。
条件编译类似C语言 “ if .....else.... ”,从大量代码中,通过预处理的方式对代码进行预删除的工作
条件编译本质是对代码进行选择性的预处理操作后的编译操作,只对符合要求的代码进行编译
/* 通常采用 #ifdef
..... #else(#elif) ...... #endif 表示*/
#define micro LINUX int main() #ifdef micro == LINUX printf("use linux"); #else printf("use other environment"); #endif
return 0;
上述这种方法是提前通过宏定义来定义一个变量STR,从而通过判段变量值选择编译内容,当然除了这种方法之外是否可以在其他地方对其定义,或把这些宏定义放在统一个文件内,这样在选择编译内容时,只需要修改文件内容即可,而不必打开每个.c文件了呢?
第一种:
gcc -Dmacro = LINUX file.c // macro == LINUX,则执行LINUX 代码
gcc -Dmacro file.c // 如果定义了macro,则执行相应代码
第22课 条件编译使用分析
条件编译的基本概念:
条件编译就是利用预处理器的功能来对代码进行一些删除操作。
程序示例:
1 #include <stdio.h> 2 3 #define C 1 4 5 int main() 6 { 7 const char* s; 8 9 #if( C == 1 ) 10 s = "This is first printf... "; 11 #else 12 s = "This is second printf... "; 13 #endif 14 15 printf("%s", s); 16 17 return 0; 18 }
运行结果如下:
单步编译的结果如下:
条件编译的本质:
通过命令行定义宏:
程序与运行结果如下:
如果我们判断一个宏标识符是否存在,需要使用#ifdef指令。示例如下:
执行单步编译:
中间结果如下:
以上是关于条件编译使用分析的主要内容,如果未能解决你的问题,请参考以下文章