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