C/C++中宏中宏/Macro的深入讲解的深入讲解
主要给大家介绍了关于C/C++中宏/Macro的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使
用C/C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
前言前言
宏(Macro)本质上就是代码片段,通过别名来使用。在编译前的预处理中,宏会被替换为真实所指代的代码片段,即下图中
Preprocessor 处理的部分。
C/C++ 代码编译过程 - 图片来自 ntu.edu.sg
根据用法的不同,分两种,Object-like 和 Function-like。前者用于 Object 对象,后者用于函数方法。
C/C++ 代码编译过程中,可通过相应参数来获取到各编译步骤中的产出,比如想看被预处理编译之后的宏,使用 gcc 使加上 -
E 参数。
$ gcc -E macro.c
宏的定义宏的定义
通过 #define 指令定义一个宏。
#define NAME_OF_MACRO value
比如,以下代码定义了一个名为 BUFFER_SIZE 的宏,指代 1024 这个数字。
#define BUFFER_SIZE 1024
使用时,
foo = (char *) malloc (BUFFER_SIZE);
使用预处理器编译:
$ gcc -E test.c
编译结果:
foo = (char *) malloc (1024);
多行多行
宏的定义是跟随 #define 在一同一行内的,但可通过 反斜杠 \ 实现换行从而定义出多行的宏。
多行的宏经过编译后会还原到一行中。
test.c
#include <stdio.h>
#define GREETING_STR \
"hello \
world"
int main() { printf(GREETING_STR); }
评论0
最新资源