C/C++常用预处理指令
作者:网络转载 发布时间:[ 2014/11/13 13:49:30 ] 推荐标签:C++ 编译 布局指令
预处理是在编译之前的处理,而编译工作的任务之一是语法检查,预处理不做语法检查。预处理命令以符号“#”开头。
常用的预处理指令包括:
宏定义:#define
文件包含:#include
条件编译:#if、#elif、#ifndef、#ifdef、#endif、#undef
错误信息指令:#error
#line指令
布局控制:#pragma
宏定义
宏定义又称为宏代换、宏替换,简称“宏”。宏替换只作替换,不做计算,不做表达式求解。宏定义分带参数的宏定义和不带参数的宏定义。在带参数的宏定义,宏名和参数的括号间不能有空格。
宏定义不分配内存,变量定义分配内存。
宏展开不占运行时间,只占编译时间;函数调用占运行时间(分配内存、保留现场、值传递、返回值)。
出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串,有时把这种用法的#称为字符串化运算符。例如:
#include<iostream>
using namespace std;
#define STR(n)"abcd"#n
int main()
{
cout<<STR(6)<<endl;
system("pause");
return 0;
}
输出结果为:
##运算符用于把参数连接到一起,预处理程序把出现在##两侧的参数合并成一个符号。例如:
#include<iostream>
using namespace std;
#define STR(a,b,c) a##b##c
int main()
{
cout<<STR(1,2,3)<<endl;
system("pause");
return 0;
}
输出结果为:
文件包含
#include<文件名>称为标准方式,到系统头文件目录查找文件,#include"文件名"则先在当前目录(用户路径)查找,而后到系统头文件目录查找。
我们以#include<iostream.h>和#include<iostream>为例说明:iostream.h是C语言格式的头(库)文件,为旧版本的标准库,只支持窄字符集;而iostream为C++的标准头文件,支持窄字符集和宽字符集。
被包含文件中的静态全局变量不用在包含文件中声明。
条件编译
使用条件编译可以使目标程序变小,运行时间变短。
#undef指令,用来删除事先定义的宏定义, 其一般形式为:#undef 宏替换名
错误信息指令
#error指令,该指令用于程序的调试,输出一个错误信息,当编译中遇到#error指令停止编译。其一般形式为: #error 出错信息。
#ifndef __cplusplus
#error this is not a C++ complier.
#endif
#include<iostream>
using namespace std;
int main()
{
system("pause");
return 0;
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11