请教编译问题
1个回答
展开全部
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之间的语句。
具体百度搜索《C++宏,预处理器,RTTI,typeid与强制类型转换专题》
下面简单讲一下逻辑预处理器#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之间的语句。
具体百度搜索《C++宏,预处理器,RTTI,typeid与强制类型转换专题》
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询