在C语言中,预处理器提供了一些特殊的符号,这些符号在编译过程中会被预处理器替换为特定的值。这些符号通常以双下划线开头和结尾,称为预定义宏。以下是一些常见的预定义宏:
__FILE__
:当前源文件的名称,以字符串字面量的形式表示。__LINE__
:当前源文件中的行号,以整数常量的形式表示。__DATE__
:源文件编译时的日期,以 “Mmm dd yyyy” 格式的字符串字面量表示。__TIME__
:源文件编译时的时间,以 “hh:mm:ss” 格式的字符串字面量表示。__STDC__
:如果编译器遵循C标准,则这个宏的值为1,否则未定义。__func__
:C99标准中引入,表示当前函数的名称,以字符串字面量的形式表示。
这些预定义宏通常用于调试目的,或者在生成的代码中包含源文件的元数据。
举例
#include <stdio.h>
int main() {
printf("File: %s\n", __FILE__);
printf("Line: %d\n", __LINE__);
printf("Date: %s\n", __DATE__);
printf("Time: %s\n", __TIME__);
printf("Function: %s\n", __func__);
return 0;
}
在这个例子中,我们使用了五个预定义宏来输出源文件的名称、行号、编译日期、编译时间以及当前函数的名称。这些宏在编译时会被替换为相应的值,因此在运行时输出的信息是固定的,反映了编译时的状态。
File: example.c
Line: 7
Date: Apr 14 2023
Time: 14:30:00
Function: main