进行预处理时的程序它支持条件编译行为能够依据不一样的条件针对程序里不同的部分实施编译操作进而生成与之相对应的目标代码这对程序的移植以及调试是有帮助作用的。条件编译总共存在三种方式接下来会逐个给予说明。1、 能够支持条件编译功能的预处理程序可以依据不同的条件编译程序不一样的部分从而生成相应目标代码的文件这对程序的移植以及调试是有帮助的。条件编译总共存在三种形式接下来将会逐个展开说明。2、 第一种方式3、 第一种形式的格式是这样的它是ifdef标识符程序段1else程序段2endif。它所起到的作用在于当那个指定的标识符已经借助define命令进行了定义后编译器就会去编译程序段1要是该标识符没有被定义那么就会编译程序段2。要是程序段2不存在也就是为空的时候那么else以及它后面的内容是可以省略的格式就会简化成ifdef标识符程序段endif。常用于依据是否定义了某个宏以此来决定编译哪部分代码依靠如此以提高程序灵活性与可移植性的是这种条件编译方式。示例可见例9-12。4、 }5、 程序第1行借助宏定义对NUM进行设置使之代表字符串OK它还能够被替换成其他任何字符串甚至是可以为空的状态。第14行运用了条件编译指令编译器会依据NUM有没有被定义来挑选编译哪个printf语句。因为NUM已经在前面有了定义所以系统会编译并且执行第一个printf语句最终输出的结果是学号与成绩信息。这样的结构让程序在不同定义的情况下能够灵活地选择输出的内容从而增强了代码的可配置性以及适应性。6、 除掉程序的第一行之后才能够编译第二个输出语句意思是一样的读者要是去上机实践一下从而验证效果。7、 第二种方式8、 第二种形式的格式是这样ifndef 标识符程序段1else 程序2 endif和第一种形式不一样会将ifdef替换成ifndef。它的作用在于当指定标识符没有通过define命令定义的时候编译程序段1要是已经定义了的话就编译程序段2。这个机制和第一种形式正好相反主要是用来防止重复包含或者根据未定义状态执行不同代码分支常常用于头文件保护等场景以此来提升程序的健壮性与编译效率。9、 第三种形态10、 另一种格式呈现为if 常量表达式程序段1else程序段2endif。一旦常量表达式的值是真并非零的时候编译程序段1要是为假那么编译程序段2。借着如此的办法程序能够依照不同的条件去开展对应的编译处理达成多样化的功能挑选提高代码的灵活性以及适应性。11、 }12、 在这个例子当中采用的是第三种条件编译方式于程序的第一行借助宏定义把R设定为1所以在进行编译的时候该常量表达式呈现为真系统会去编译并且执行计算以及输出圆面积的代码段尽管类似这样的逻辑也能够通过条件语句来达成然而那样做会致使整个源程序被毫无差别地编译所生成的目标代码变得冗长而运用条件编译仅仅依据判断的结果来选择编译对应的代码段有效地缩减了最终程序的体积。所选代码段较长之际这般编译方式不但能够提升效率而且还可以显著优化代码结构这般所以在实际编程当中具备重要的应用价值。