- 浏览: 45186 次
- 性别:
- 来自: 河北
最新评论
条件编译是指按照给定的条件决定哪些源代码参与编译,而哪些源代码不参与编译,从而使一个源程序在不同编译条件下生不同的目标程序。C++提供几种不同形式的条件编译指令,可以将一个表达式或者某个宏是否被定义作为编译条件,主要用于设计便于调试的程序或可移值的程序。
条件编译指令有多种,其结构类似于if语句结构。条件编译指令分别以#if、#ifdef或#ifndef指令开始,中间可以有#else指令,最后以#endif指令表示一条编译指令的结束。下面给出条件编译指令常用的三种形式:
#if...[#else]...#endif
#ifdef...[#else]...#endif
#ifndef...[#else]...#endif
#if指令检测其后表达式的值是否为真,如果为真,则随后的源代码要参与编译,直到出#else或#endif;如果不为真,则随后的源代码不参与编译。#ifdef指令是#if defined指令的缩写,它检测其后的宏是否被定义,如果被定义过,则随后的源代码要参与编译。#ifndef指令也检测其后的宏是否被定义,但不同的是,只有当该宏没有被定义过,随后的源代码参与编译。
例 使用条件编译指令
(1)#if指令的用法
#include <iostream.h> #define MAX 100 //宏定义 void main() { #if MAX > 99 //条件编译 cout << "MAX is greater than 99 !" << endl; #else cout << "MAX is small !" << endl; #endif }
在程序中,由于MAX定义的值大于99,所以#if和#else之间的源代码要参与编译。程序运行后显示:
MAX is greater than 99 !
(2)#ifdef指令用法
#include <iostream.h> #define DEBUG //宏定义 int main() { int nDebug=50; int nRealse=6; #ifdef DEBUG //条件编译 cout <<"DEBUG:value of version is " << nDebug << endl; //调试版 #else cout <<"RELEASE:value of version is " << nRealse << endl;//正式版 #endif #ifndef DEBUG //条件编译 cout <<"DEBUG:value of version is " << nDebug << endl; //调试版 #else cout <<"RELEASE:value of version is " << nRealse << endl;//正式版 #endif return 1; }
在程序中,标识符DEBUG是否被#define指令定义作为编译条件。利用#ifdef指令,根据DEBUG是否被定义确定具体编译哪一条源代码。程序运行后显示:
DEBUG:value of version is 50
RELEASE:value of version is 6
发表评论
-
MFC的打印
2009-05-24 17:05 0虽然Windows通过 ... -
ActiveX控件
2009-05-23 15:49 6653ActiveX是Microsoft提出的使用组件对 ... -
多线程
2009-05-22 18:57 0Windows对CPU的管理的采取时间片分配的方式 ... -
动态链接库DLL
2009-05-22 14:38 0为了提高系统 ... -
异常处理
2009-05-21 19:06 2059异常(exception)是指在程序运行过程中发生 ... -
MFC ODBC数据库类
2009-05-20 19:44 73441.ODBC概述 ... -
对话框高级编程---公共控件之四(树视控件)
2009-05-19 21:45 2345树视(tree view)控 ... -
对话框高级编程---公共控件之四(列表视控件)
2009-05-19 14:01 0列表视(list view)控件也称列表控件,属 ... -
对话框高级编程---公共控件之三(图像列表)
2009-05-18 21:22 0图像列表(image list)是一个由一些大小相同 ... -
对话框高级编程---公共控件之二(标签控件和属性表)
2009-05-18 20:33 35151.标签控件 标签(tab)控件也 ... -
对话框高级编程---公共控件之一(旋转按钮、滑块和进度条)
2009-05-18 11:09 01.旋转按钮 ... -
对话框高级编程---通用对话框
2009-05-17 21:17 17851.通用对话框概 ... -
对话框高级编程---非模态对话框
2009-05-16 21:39 0尽管不同对话 ... -
图形处理---位图、图标和光标
2009-05-16 20:33 21731.位图 例1 编写一个应用程序MyB ... -
图形处理---位图,图标和光标
2009-05-16 20:16 01.位图 例1 编写一个应用程序MyBMP ... -
图形处理---位图、图标和光标
2009-05-16 19:58 01.位图 例1 编写一个应用程序MyBMP ... -
文本与字体
2009-05-16 16:23 01.绘制文本 以图形方式进行文本的输 ... -
图形处理---基本几何图形的绘制
2009-05-15 21:27 0获取设备环境、设置绘图属性和选择GDI绘图对象后,就 ... -
图形处理---画笔和画刷
2009-05-15 17:30 0进行绘图除了需 ... -
图形处理---颜色的设置
2009-05-15 16:08 0在绘制图形时,颜色是一个需要考虑的因素。Window ...
相关推荐
C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define、#undef、#if,#elif,#else和#endif等等,下面介绍C#中使用#define进行条件编译的实例。 C#中条件编译...
英文的,忠告:不管做什么开发,只要写程序的,都应该锻炼看英文文档. 描述: see title!
四、 #pragma hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译。 3 五、 #pragma warning指令 3 六、 pragma comment(...) 5 七、 #pragma的用法 7 (1) message 参数。 8 (2) 另一个使用得比较多的...
网上众多的开源C/C++代码,因为跨平台的需要,参杂了许多的条件编译语句,对阅读源代码造成了不方便,而且用ctags等工具生成源代码的tags文件时会有些妨碍,本工具就是用来预处理这些条件编译的,将未定义的区域自动...
FirstVT集和LastVT集生成算法模拟(编译原理课设).doc
本文档详细介绍了C语言中#ifdef...#endif条件编译的定义及如何使用情况。
#if CustomDebug Console.WriteLine(dsads); #endif 以上所述就是本文的全部内容了,希望大家能够喜欢 您可能感兴趣的文章:C# 编译生成dll文件供程序调用的两种方法C# #define条件编译详解C#实现将javascript文件...
介绍了c语言中条件编译的几种形式及其使用方法
最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真...
编译Android源码系统要求如果是在Mac OSX 10.12上,编译Android 6.0和7.0是最方便的了,低版本因为JDK和Xcode的限制,要修改编
5. 完整gcc编译编译脚本test -d fullgcc-build && /bin/rm -rf fullgcc-buildmkdir fullgcc-bu
一、实验完成度 二、编译方法 三、功能实现思路方法
环境配置添加编译工具sudo apt install gcc make -y添加内核编译依赖包sudo apt install libncurses5 libn
#if #else #endif 作用:控制编译的代码 例如: #if(condition) 代码A #else 代码B #endif 如果condition为真,则程序编译的时候只编译代码A,如果condition为假,则程序编译的时候只编译代码B 所以, #if #...
java反编译工具
pyc反编译相关文章- py可执行文件反编译教程--exe转换py- Python代码保护 | pyc 混淆从入门到工具实现相关工具- python反编译# 例
1、 生成(安装)交叉编译链工具 2、 生成配置文件 3、 编译 4、 安装
《编译原理》课程设计说明书ifelse条件语句的翻译程序设计(简单优先法、输出四元式).docx《编译原理》课程设计说明书ifelse条件语句的翻译程序设计(简单优先法、输出四元式).docx《编译原理》课程设计说明书ifelse...
Webpack加载器,可直接从Webpack进行JavaScript或TypeScript条件编译( #if ... #elif ... #else ... #endif )。 有条件的编译指令写在///三斜杠注释中,这样它们就不会影响普通JavaScript或TypeScript解析。 ...