预处理命令

根据已放置在文件中的预处理指令来修改源文件的内容,预处理器会分析并执行所有的预处理指令,然后删除他们,得到一个仅包含C++语句的转换单元,预处理指令以“#”号开头

常见的预处理指令:

1、#include 包含头文件(头文件一般包含函数原型与全局变量)

形式常有下面两种

#include 引用标准头文件,只搜索标准库头文件的默认目录
#include “myheader.h” 引用自定义的头文件,搜索正在编译的源文件所在的目录,找不到时再搜索包含标准库头文件的默认目录

2、#define 定义符号、宏

如:#define PI 3.1415925 // 定义符号常量PI为3.1415925,后面不加分号

在编译前,预处理器会遍历代码,在它认为置换有意义的地方,用字符串PI的定义值(3.1415925)来代替,在注释或字符串中的PI不进行替换

undef删除#define定义的符号

如:

#define PI 3.14159265......// 之间所有的PI都可以被替换为3.14159265#undef PI//之后不再有PI这个标识符



但是在C++中最好使用const来定义变量,如上面的定义可改为:

const long double PI=3.1415925;

两者比较下,前者没有类型的指定,容易引起不必要的麻烦,而后者定义清楚,所以在C++中推荐使用const来定义常量

define的缺点:

1)不支持类型检查

2)不考虑作用域

3)符号名不能限制在一个命名空间中

3、#indef,#ifndef,#endif

#ifdef 如果宏被定义就进行编译
#ifndef 如果宏未被定义就进行编译
#endif 结束编译块的控制

4、#if,#else

#if 表达式非零就对代码进行编译
#else 作为if为假的选项对代码进行编译

5、#error

输出一个错误信息

6、#pragma

为编译程序提供非常规的控制流信息
原文链接: https://www.cnblogs.com/kykuaileren/archive/2011/09/09/2172801.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/32025

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午9:17
下一篇 2023年2月8日 上午9:17

相关推荐