关于C语言中的宏,有许多高级用法,这在项目开发中可以起到事半功倍的效果

宏定义

1
#define MAX_LINE 5000

这里是定义一个静态的宏

当我们在代码中引用到 MAX_LINE 这个宏时,它的值就为 \(5000\),相当于一个替换作用,这个替换是发生在预编译阶段,这里介绍一下代码的编译运行过程:

预处理 \(\longrightarrow\) 编译 \(\longrightarrow\) 汇编 \(\longrightarrow\) 链接

宏函数

C语言中,有一些系统自带的宏

  • __DATE__:当前编译日期,格式为"MMM DD YYYY",例如"Jan 01 2022"。
  • __TIME__:当前编译时间,格式为"HH:MM:SS"。
  • __FILE__:当前源文件名。
  • __LINE__:当前源代码行号。
  • __FUNCTION__:当前所在的函数名。
  • __STDC__:表示是否符合C标准,值为 1 表示符合,否则为 0
  • __cplusplus:表示是否为C++程序,1 表示符合,否则为 0
  • __VA_ARGS__:可变参数宏
  • #:这个可以将传入的参数在预编译过程变为字符串

利用宏的特性,可以定义一些函数,例如

1
2
3
4
5
6
7
8
9
10
11
// 利用宏函数来进行 debug
#define Debug(format, ...) \
do { \
printf("[%d][%s] " format, \
__LINE__, __FUNCTION__, __cplusplus, ##__VA_ARGS__); \
} while (0);

Debug("1111") // 假设第8行,main函数里

// 输出
[8][main] 11111

参考文献

CSDN: https://wenku.csdn.net/answer/d27a1d171fe04bf6a87ccf4648902461