vc++学习篇(三)——预处理命令之条件编译(#ifdef,#else,#endif,#if等)

    预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。
  关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况:
1:情况1:
#ifdef _XXXX
...程序段1...
#else
...程序段2...
#endif
  这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。

例:
#define NUM
.............
.............
.............
#ifdef NUM
  printf("之前NUM有过定义啦!:) /n");
#else
  printf("之前NUM没有过定义!:( /n");
#endif
}
  如果程序开头有#define NUM这行,即NUM有定义,碰到下面#ifdef NUM的时候,当然执行第一个printf。否则第二个printf将被执行。
  我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。

2:情况2:
#ifndef _XXXX
...程序段1...
#else
...程序段2...
#endif
  这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。例子就不举了。

3:情况3:
#if 常量
...程序段1...
#else
...程序段2...
#endif
  这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。
  我认为,这种方法可以将测试代码加进来。当需要开启测试的时候,只要将常量变1就好了。而不要测试的时候,只要将常量变0。

时间: 2024-12-08 08:01:02

vc++学习篇(三)——预处理命令之条件编译(#ifdef,#else,#endif,#if等)的相关文章

vc++学习篇(二)——打印和视频功能的实现

好久没有写技术文章了,这次是因为接了学校的一个活,没有办法,逼迫我继续学习vc++,现在不得已又硬着头皮去学习了,虽然自己知道这个东西很难,但是相信自己一定回胜利,而且,自己还有这么多朋友帮助,相信自己一定回学回的. 这次老师让我们回去了准备把以前的一个招生的系统的给更改以下,主要是添加两个功能:1.打印和打印预缆功能2.数码照相功能 对于第一个功能用mfc中的一些现成的就容易多了,而且查一些资料,然后自己看了,觉得就是对一些参数设置的东西,只不过需要更仔细一点了.昨天看了以下相关的内容,过程好

C语言预处理命令之条件编译

在C语言中,预处理指令是以#号开头的代码行.#号必须是该行除了任何空白字符外的第一个字符.#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符.整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换. 条件编译指令将决定哪些代码被编译,哪些是不被编译的.可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件. 下面是部分预处理指令: 指令用途 #  空指令,无任何效果 #include  包含一个源代码文件 #define  定义宏 #undef  取消已定义

c++-求解关于C++中的条件编译#ifdef

问题描述 求解关于C++中的条件编译#ifdef IDE是codeblocks,源文件 第一个是头文件time.h,定义类 // time.h //#ifdef _TIME_H #define _TIME_H class Time { private: int hour; int minute; int second; public: Time(); void set_time(int h, int m, int s); void show_time(); }; //#endif 第二个是方法实

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——导读

前言 本书是最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>的最新版,全面而详细地介绍了Linux操作系统.全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机:第二部分介绍Linux的文件系统.文件.目录与磁盘的管理:第三部分介绍文字模式接口shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法:第四部分介绍了对于系统安全非常重要的Linux账号的管理,以及主机系统与程序的管理,如查看进程.任务分配和作业管理

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——0.5 重点回顾

0.5 重点回顾 鸟哥的Linux 私房菜 基础学习篇(第三版) ◆ 计算机的定义为:"接受用户输入指令与数据,经由中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息". ◆ 计算机的五大单元包括输入单元.输出单元.CPU内部的控制单元.算术逻辑单元与内存五大部分. ◆ 数据会流进/流出内存是CPU所发布的控制命令,而CPU实际要处理的数据则完全来自于内存. ◆ CPU依设计理念主要分为精简指令集(RISC)与复杂指令集(CISC)系统. ◆ 关于CPU的频率部分,外频指的

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——0.6 本章习题

0.6 本章习题 鸟哥的Linux 私房菜 基础学习篇(第三版)实践题部分假设你不知道你的主机内部的各项组件数据,请拆开你的主机箱,将内部所有的组件拆开,并且依序列出: ■ CPU的厂牌.型号.最高频率: ■ 内存的容量.接口(DDR/DDR II等): ■ 显卡的接口(AGP/PCIe/内置)与容量: ■ 主板的厂牌.南北桥的芯片型号.BIOS的厂牌.有无内置的网卡或声卡等: ■ 硬盘的连接接口(IDE/SATA等).硬盘容量.转速.缓冲存储器容量等: ◆ 然后再将它组装回去.注意,拆装前务必

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——1.5 本章习题

1.5 本章习题 鸟哥的Linux 私房菜 基础学习篇(第三版)实践题部分◆ 请依据本章内容的说明,下载Fedora最新版本的Live CD,并将该Live CD刻录成为光盘(或DVD)后,调整你的主机BIOS成为使用光驱启动,在启动时放入刚才刻录的Live CD,使用该光驱启动.在开机后你应该能够进入系统.请进入该系统,尝试打开终端机.浏览器等,并尝试操作一下该系统.由于该系统并不会影响到你的硬盘数据,请尽量玩玩! ◆ 承上题,打开终端机并且输入"uname -r"这个命令,出现的内

拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录

目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历):说到底还是一个学习能力的问题.就这一点,从我的经历看来(曾到多家企业培训新人),培训出身的技术人员大体而言确实没有科班出身的学得更快准狠一些.学习能力这个东西其实比较虚,它并没有一个直观的考量方式,所以企业一般都会简单粗暴的使用学历.专业.项目经验来衡量.这之间反映了你的计算机知识框架是否完善.基

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——1.4 重点回顾

1.4 重点回顾 鸟哥的Linux 私房菜 基础学习篇(第三版) ◆ 计算机主要以二进制作为单位,而目前常用的磁盘容量单位为B,其单位换算为1B = 8bit,其他的以1024为其倍数,如1GB=1024MB等. ◆ 操作系统(Operation System)主要用于管理与驱动硬件,因此必须要能够管理内存.管理设备.负责进程管理以及系统调用等.因此,只要能够让硬件准备妥当(Ready)的情况,就是一个很棒的操作系统了. ◆ 操作系统重点仅在驱动与管理硬件,而要使用硬件时,就得需要通过应用软件或