欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++预处理的那些事

程序员文章站 2022-03-02 21:07:19
...

预处理做什么

  预处理阶段编程的操作目标是“源码”,用各种指令控制预处理器,把源码改造成为另一种形式。

预处理指令

  • 预处理指令都是以#开头
  • 单独的#也是一个预处理指令
  • GCC使用-E,输出预处理之后的源码
  • #include 可以包含任意的文件
    预处理的巧用
//table.inc 
static int table[]  = {
... ... ...
... ... ... 
};
//.c 文件
static int table[] = {
# include "table.inc"
};

宏定义

  • 宏定义是一个源码级别的“文本替换”
  • 宏替换无视 C++ 的语法规则
  • 宏的展开、替换是在预处理阶段,不涉及函数的调用、参数的传递、指针寻址;所以没有任何运行期的效率损失。
  • 对于使用频繁的小段代码,用宏封装比inline关键字更好,因为宏是源码级别的无条件内联
  • 宏没有作用域,是全局生效的;所以临时作用的宏,最好在用完后尽快使用#undef取消定义
宏定义前先检查
#ifdef xxx
#	undef xxx //取消宏定义
#endif
#define xxx somtthing

查看gcc预定义的宏

g++ -E -dM - < /dev/null

相关标签: 编程语言