条件编译功能
另外,条件编译是为了让程序在各种不同的软硬件环境下都以运行。即,提高了程序的可移植性和灵活性。
条件编译格式
if格式
ifdef格式
ifndef格式
排版
不相互嵌套
条件编译关键字语句顶格左对齐;
函数体外
这种情况下,条件编译语句块不影响函数体
条件编译关键字语句顶格左对齐;
所含的函数体定义无需缩进,依旧按照单个函数体定义的排版方式进行。
函数体内
a)当条件编译语句块与被包语句所属的语句块之间没有逻辑路径交叉时,以下两种方式均可
按照语句块嵌套方式进行缩进排版 (推荐);
条件编译语句不影响原先语句块排版,条件编译语句与所包含的关键字语句块左对齐 。
b)当条件编译语句块与被包语句所属的语句块之间存在逻辑路径交叉时
应用举例
分析:
源文件a.c中的main()函数要调用b.c中的subl()函数,也要调用c.c中的sub2()函数,所以,文件a.c包含了b.c和c.c。 源文件b.c中的sub3()函数要调用c.c中的 sub2()函数,所以b.c也包含c.c。这样一来就造成了重复包含的问题,即文件a.c包含了两次c.c,a.c的内容相当于是这样的:
其中c.c的内容出现了两遍,就有了两次sub2()函数的定义,导致编译错误。
要解决这个问题,需要用条件编译,将c.c的内容放在条件编译控制之下,即将c.c 的内容修改为