打印

条件编译命令

[复制链接]
656|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 表达式进行测试。否则,顺序测试下一块。

使用特权

评论回复
5
engao| | 2016-10-28 20:13 | 只看该作者
#else 命令的功能有点象 C 语言中的 else;#else 建立另一选择(在#if 失 败的情况下)。注意,#else 属于#if 块。

使用特权

评论回复
6
heping517|  楼主 | 2016-10-28 20:13 | 只看该作者
条件编译的另一种方法是用#ifdef 与#ifndef 命令,它们分别表示"如果有 定义"及"如果无定义"

使用特权

评论回复
7
engao| | 2016-10-28 20:14 | 只看该作者
在嵌套的条件编译中#endif、#else 或#elif 与最近#if 或#elif 匹配。 # ifdef 和# ifndef

使用特权

评论回复
8
电子信使| | 2016-10-28 20:14 | 只看该作者
#ifdef 与#ifndef 可以用于#if、#else,#elif 语句中,但必须与一个#endif。

使用特权

评论回复
9
heping517|  楼主 | 2016-10-28 20:14 | 只看该作者
命令#undef 取消其后那个前面已定义过有宏名定义。一般形式为: #undef macroname

使用特权

评论回复
10
电子信使| | 2016-10-28 20:15 | 只看该作者
命令#line 改变__LINE__与__FILE__的内容,它们是在编译程序中预先定义 的标识符。

使用特权

评论回复
11
heping517|  楼主 | 2016-10-28 20:15 | 只看该作者
其中的数字为任何正整数,可选的文件名为任意有效文件标识符。行号为源 程序中当前行号,文件名为源文件的名字。命令#line 主要用于调试及其它特殊 应用。注意:在#line 后面的数字标识从下一行开始的数字标识。

使用特权

评论回复
12
电子信使| | 2016-10-28 20:16 | 只看该作者
#line100"jia" cout<<"#linechangelineandfilename!"<<endl;//line100 cout<<__LINE__<<endl;//101 cout<<__FILE__<<endl;//jia

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

648

帖子

0

粉丝