4. 特殊预定义宏
在 C 语言的编译器中,已经预置好了特殊的一些预定义的宏。这个宏有利于帮助我们来为程序添加有用的信息。
下表列出了常用的特殊预定义宏
宏
说明
备注
__DATE__当前源文件的编译日期(字符串),格式为:"Mmm dd yyyy",(如 "Nov 23 2025")。
__TIME__当前源文件的编译时间(字符串),格式为:"hh:mm:ss"(如 "14:30:00")。
__FILE__当前源文件的文件名(字符串)。
__LINE__当前代码行的行号(整数)。
__func__当前所在的函数名(字符串)。
C99 启用
示例:
// filename: special_macro.c
#include <stdio.h>
int main(int argc, char * argv[]) {
printf("当前编译日期:%s\n", __DATE__);
printf("当前编译时间:%s\n", __TIME__);
printf("当前编译文件:%s\n", __FILE__);
printf("当前的行编号:%d\n", __LINE__);
printf("当前函数名:%s\n", __func__);
return 0;
}
编译和运行结果如下:
weimingze@mzstudio:~$ gcc -o special_macro special_macro.c
weimingze@mzstudio:~$ ./special_macro
当前编译日期:Nov 23 2025
当前编译时间:16:06:43
当前编译文件:special_macro.c
当前的行编号:8
当前函数名:main