条件编译命令

[复制链接]
 楼主| heping517 发表于 2016-10-28 20:10 | 显示全部楼层 |阅读模式
有几个命令可对程序源代码的各部分有选择地进行编译,该过程称为条件编 译。商业软件公司广泛应用条件编译来提供和维护某一程序的许多顾客版本。
 楼主| heping517 发表于 2016-10-28 20:12 | 显示全部楼层
#if 的一般含义是如果#if 后面的常量表达式为 true,则编译它与#endif 之 间的代码,否则跳过这些代码。命令#endif 标识一个#if 块的结束
engao 发表于 2016-10-28 20:12 | 显示全部楼层
跟在#if 后面的表达式在编译时求值,因此它必须仅含常量及已定义过的标 识符,不可使用变量。表达式不许含有操作符 sizeof(sizeof 也是编译时求值)。
 楼主| heping517 发表于 2016-10-28 20:13 | 显示全部楼层
#elif 命令意义与 ELSE IF 相同,它形成一个 if else-if 阶梯状语句,可 进行多种编译选择。#elif 后跟一个常量表达式。如果表达式为 true,则编译 其后的代码块,不对其它#elif 表达式进行测试。否则,顺序测试下一块。
engao 发表于 2016-10-28 20:13 | 显示全部楼层
#else 命令的功能有点象 C 语言中的 else;#else 建立另一选择(在#if 失 败的情况下)。注意,#else 属于#if 块。
 楼主| heping517 发表于 2016-10-28 20:13 | 显示全部楼层
条件编译的另一种方法是用#ifdef 与#ifndef 命令,它们分别表示"如果有 定义"及"如果无定义"
engao 发表于 2016-10-28 20:14 | 显示全部楼层
在嵌套的条件编译中#endif、#else 或#elif 与最近#if 或#elif 匹配。 # ifdef 和# ifndef
电子信使 发表于 2016-10-28 20:14 | 显示全部楼层
#ifdef 与#ifndef 可以用于#if、#else,#elif 语句中,但必须与一个#endif。
 楼主| heping517 发表于 2016-10-28 20:14 | 显示全部楼层
命令#undef 取消其后那个前面已定义过有宏名定义。一般形式为: #undef macroname
电子信使 发表于 2016-10-28 20:15 | 显示全部楼层
命令#line 改变__LINE__与__FILE__的内容,它们是在编译程序中预先定义 的标识符。
 楼主| heping517 发表于 2016-10-28 20:15 | 显示全部楼层
其中的数字为任何正整数,可选的文件名为任意有效文件标识符。行号为源 程序中当前行号,文件名为源文件的名字。命令#line 主要用于调试及其它特殊 应用。注意:在#line 后面的数字标识从下一行开始的数字标识。
电子信使 发表于 2016-10-28 20:16 | 显示全部楼层
#line100"jia" cout<<"#linechangelineandfilename!"<<endl;//line100 cout<<__LINE__<<endl;//101 cout<<__FILE__<<endl;//jia
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

648

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

90

主题

648

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部