C++是从C发展而来的,预处理也是从C继承而来的。 预处理是在编译之前进行的处理,C C++ 的预处理主要是宏定义、文件包含和条件编译。
预处理指令基于#
数字开头的 ** 行,#
除了任何空格字符外,该数字必须是行中的第一个字符。 #
在指令关键字之后,在关键字和#
允许使用任意数量的空格字符,并且整行语句构成一个预处理指令,该指令将在编译器编译之前对源代码进行一些转换。
常用的预处理指令:
宏定义也称为宏替换、宏替换或简称“宏”。
1)无参数宏定义
格式如下:定义标识符文本。
标识符是所谓的符号常量,也称为“宏名称”。
例如#define pi 3.1415926
注意:宏名称通常大写。
宏的使用提高了程序的多功能性和易读性,减少了不一致,减少了输入错误,并促进了修改。 例如,数组大小通常由宏定义。
是的#undef
命令终止宏定义的范围。
宏定义可以嵌套。
2) 带参数的宏
除了一般的字符串替换外,还需要参数替换。
格式如下:定义宏名(参数表)文本。
例如#define s(a,b) a*b
将area=s(3,2);
若要执行宏替换,第一步是替换area=a*b;
,则第二步替换为area=3*2;
注意:有时宏替换的结果与我们预期的不同,需要注意的是,宏替换只是替换。
C++ 程序文件中的一个文件包含另一个文件的内容。
格式如下:include"文件名"
或。 include 文件名
常见用法:
包括标准库头文件。注意:包括旧式标准库标头。
iostream.h
仅支持窄字符集iostream
则支持窄字符集和宽字符集。 一般用途iostream
相关文档:在 C 语言中包含和包含"filename"区别。
编译单元是包含过程之后的文件,包含的文件是源文件的一部分。
编译后,您只得到一个目标文件.obj
包含的文件也称为“头文件”或“头文件”或“头文件”,并且是常用的。 h 作为扩展名。
修改头文件时,将重新编译包含它的所有文件。
除了函数原型和宏定义外,头文件的内容还可以有结构定义和全局变量定义
1)include命令指定头文件;
2)文件1包含文件2,文件2使用文件3,则文件3的include命令应放在文件1头的第一行;
3)包含可以嵌套;
4)“文件名”为标准调用方式,系统进入头文件目录查找文件"文件名"首先在当前目录中进行搜索,然后在头文件目录中进行搜索
5) 包含文件中的静态全局变量不需要在包含文件中声明。
有些语句是在满足条件时编译的。 例如,不同的平台使用不同的实现,需要针对平台进行编译。
格式:ifdef 标识符。
第 1 部分 其他
第 2 段结束
或。 #ifdef
第 1 段结束
注意:在上述格式中,段 1 仅在定义标识符后才参与编译。
或。 ifndef 标识符。
定义 ID1
第 1 段结束
注意:在上述格式中,如果未定义标识符,则重新定义ID 1并执行段1。
或。 if 表达式 1
第 1 段 ELIF 表达 2 第 2 段
ELIF 表达式 n
第 n 段 else
段 n+1
#endif
注意:在上述格式中,当表达式 1 为 true 时,将编译程序段 1,如果不是,则编译程序段 2。
使用条件编译,可以使目标程序更小,运行时间更短。