C++基础之预处理命令
目录
- 概述——对预处理命令的理解
- 预处理命令的处理时间
- C++中主要的预处理命令
宏定义
“文件包含”处理
选择编译
概述
使用C++的预处理命令可以提高程序的可维护性,有利于程序员以更加方便和快捷的方式进行项目开发,除此之外,还使用预处理命令还可以提高程序的编译和执行效率
预处理命令的处理时间
在编译系统执行编译之前
C++中主要的预处理命令
宏定义
#define Name 具体值
注:在结尾不使用分号
对宏定义的理解
对经常使用到的常量进行宏定义
对一些常量进行宏定义可以让代码更易于维护
“文件包含”处理
#include < > 包含系统文件
#include " " 包含非系统文件
对文件包含的理解
类的定义和声明,常常把类的声明及其中的成员变量和成员函数等等的声明放在.h文件中,把其定义放在.cpp文件;
可以把经常用到的一些数据放到一个文件中,需要用的时候把该文件包含进来;
选择编译
书写形式
#ifdef 标识符
程序段1
#else
程序段2
#endif
运用举例
#define RUN
#ifdef RUN
cout << "run" <<endl;
#else
cout << "not run" <<endl;
#endif
注:第一行中的#define RUN不一定要有对RUN定义的常量,可以仅仅是一个给预处理命令的标识而已;如果定义了RUN,则执行程序段1里面的内容,若没有定义RUN,则执行#else后面的程序段,即程序段2;
C++基础之预处理命令的更多相关文章
- 关于MFC预处理命令
MFC程序生成EXE文件的过程是:预处理-编译-链接-打包生成exe文件.(预编译是编译过程,即将一些常用的不经常改变的文件先进行编译处理生成中间文件,以节省时间,它不属于预处理,在VS项目属性的C/ ...
- 预处理命令[#define]说明
宏定义 宏定义是对一些常见的变量.字符串等进行定义,被定义的数据在编译会进行自动替换.有时一些变量或字符串被多次使用,当需要修改时,就需要对源文件中它们出现的地方一一修改,效率比较低,而通过宏定义,只 ...
- 【C语言入门教程】2.8 C 语言的预处理命令
预处理命令是在程序编译阶段进行执行的命令,用于编译与特定环境相关的可执行文件.预处理命令扩展了 C 语言,本节将选择其中一些常用的预处理命令进行讲解. 2.8.1 宏替换命令 宏替换命令的作用类似于对 ...
- 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
[源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...
- 编译预处理命令--define和ifdef的使用
这里将对常用的预处理命令进行学习. 一.宏定义 ·defined 格式:`defined 宏名 数值 或者 `define 宏名 注意:后面没有‘;‘,和单片机不一样: ...
- C/C++编译预处理命令详解【转】
1. 预处理程序 按照ANSI标准的定义,预处理程序应该处理以下指令: #if #ifdef #ifndef #else #elif #endif #define #undef #lin ...
- 预处理命令#define #undef #if #endif 的基本用法
C#的预处理命令其实还是蛮有用的,但是真正使用过得人不多,这个介绍一下平时用的比较多的预处理命令中的几个:#define,#undef ,#if,#endif.除此之外还有一些预处理命令#warnin ...
- c# 预处理命令
在编译之前进行的处理. 预处理命令以符号“#”开头. #define 只能 定义符号 不能定义宏(#define PI 3.14 这是错的,在c#中没宏) #region #endregion #if ...
- C语言之预处理命令
/**************************************************************************** Title:C之预处理命令 Time:201 ...
随机推荐
- effective c++:dynamic_cast,避免返回handles指向对象内部
关于dynamic_cast 假定我们有一个基类指针bp,我们在运行时需要把它转换成他的派生类指针,这个时候需要用到dynamic_cast. Derived *dp = dynamic_cast&l ...
- STL源码剖析读书笔记--第6章&第7章--算法与仿函数
老实说,这两章内容还蛮多的,但是其实在应用中一点点了解比较好.所以我决定这两张在以后使用过程中零零散散地总结,这个时候就说些基本概念好了.实际上,这两个STL组件都及其重要,我不详述一方面是自己偷懒, ...
- Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1
Cartfile:github "SwiftyJSON/SwiftyJSON"got error:Module compiled with Swift 3.0 cannot be ...
- xcode报错:Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/b
今天使用xcode编译工程发现一个问题,这里记录一下防止忘记 xcode报错: Command /Applications/Xcode.app/Contents/Developer/Toolchain ...
- js闭包测试
本文的诞生,源自近期打算做的一个关于javascript中的闭包的专题,由于需要解析闭包对垃圾回收的影响,特此针对不同的javascript引擎,做了相关的测试. 为了能从本文中得到需要的知识,看本文 ...
- C++11多态函数对象包装器
[C++11多态函数对象包装器] 针对函数对象的多态包装器(又称多态函数对象包装器)在语义和语法上和函数指针相似,但不像函数指针那么狭隘.只要能被调用,且其参数能与包装器兼容的都能以多态函数对象包装器 ...
- 查询processlist具体信息
SELECT * FROM information_schema.PROCESSLIST WHERE HOST LIKE '%172.16.10.22%' AND COMMAND <> ' ...
- 在Ribbon中,中文换行位置不对怎么办
在Ribbon代码的编写时,关于UI上面设置Button的中文字,经常会出现不想换行的地方换行的情况,比如下图: 我如果希望中国一行,然后只有一行怎么办呢. 网上流传的很多方法就是直接加空格,但是很遗 ...
- Linux 信号
每个进程都需要有个信号处理函数,以捕捉异常信号. 我们在写代码时,有时会有内存非法使用,这种问题一般比较难定位.但是如果有信号处理函数,就可以在捕捉到SEGV信号后打印出详细信息以定位问题. 下面写一 ...
- 当WEB站点应用程序池标识为ApplicationPoolIdentity,出现运行错误时的解决方法
对于数据库文件加Authenticated Users用户,并授予完全权限.