请教编译问题

如题所述

c语言中关于编译的一个问题?

你这样的用法不能体现出预处理器的作用,预处理器在使用多个文件特别是包含头文件的时候就
很有用了,一般对于单一文件来讲,用处不是很大。
下面简单讲一下逻辑预处理器#if的两个用处。
1、#if指令用法一:测试某个符号是否以前用#define定义过,该用法的指令如下#if defined 标识符 …. #endif 其缩写形式为#ifdef 标识符….#endif表示如果,指定的标识符已被#define定义,则中间的语句就包含在源文件中,如果该标识符还未被#define定义,则跳过#if和#endif之间的语句,该语句以#endif结束,还要注意的是标识符前的关见字是defined比define多一个字母d。
2、测试标识符是否不存在:其语法为#if !defined 标识符…..#endif缩写形式为#ifnedf 标识符…..#endif表示如果指定的标识符没有定义,则把#if和#endif之间的语句包含在源文件中,如果标识符已定义则跳过#if和#endif之间的代码,实标上#ifndef语句比#ifdef语句使用得更频繁,因为系统使用该语句防止头文件被多次包含,
3、防止头文件被包含多次的方法:其方法为#ifndef HY #define HY语句#endif程序在开始遇到标识符HY时没有被定义,这时执行后面的语句,再第二次被使用时则标识符HY已经被定义,这时不会执行后面的语句,从而防止了同一头文件被包含多次的情况。这里要注意使用#define后面定义的标识符不需要值。
4、#if语句还可以使用逻辑运算符以测试多个值,比如#if defined HY1&&HY2….#endif当HY1与HY2都为真时才执行,同样还可以使用其他逻辑运算符。
5、#if指令用法二:测试某个表达式的值是否为真,其语法格式为:#if 常量表达式….#endif,注意常量表达式的求值结果应是整数常量表达式,比如#if a=2 …. #endif测试a的值是否为2,如果为2则执行#if与#endif之间的语句。
温馨提示:答案为网友推荐,仅供参考
相似回答