C语言时间相关宏定义
在C语言中,预处理器提供了一些与时间相关的宏定义,用于在编译时获取日期、时间等信息。除了 __TIMESTAMP__
和 __DATE__
,还有以下相关的宏定义:
-
__DATE__
当前编译日期的字符串,格式为"Mmm dd yyyy"
(例如"Oct 10 2023"
)。 -
__TIME__
当前编译时间的字符串,格式为"hh:mm:ss"
(例如"14:30:00"
)。 -
__TIMESTAMP__
当前源文件的最后修改日期和时间,格式为"Mmm dd yyyy hh:mm:ss"
(例如"Oct 10 2023 14:30:00"
)。 -
__FILE__
当前源文件的文件名(字符串)。 -
__LINE__
当前代码行的行号(整数)。 -
__func__
(C99 标准引入)
当前函数的名称(字符串)。 -
__STDC__
如果编译器遵循 ANSI C 标准,则定义为1
。 -
__STDC_VERSION__
表示编译器遵循的 C 标准版本(例如,C99 为199901L
,C11 为201112L
)。 -
__cplusplus
(C++ 中)
如果编译的是 C++ 代码,则定义为一个表示 C++ 标准版本的值。
示例代码
#include <stdio.h>
int main() {
printf("Date: %s\n", __DATE__);
printf("Time: %s\n", __TIME__);
printf("Timestamp: %s\n", __TIMESTAMP__);
printf("File: %s\n", __FILE__);
printf("Line: %d\n", __LINE__);
printf("Function: %s\n", __func__);
printf("STDC: %d\n", __STDC__);
printf("STDC Version: %ld\n", __STDC_VERSION__);
return 0;
}
输出示例
Date: Oct 10 2023
Time: 14:30:00
Timestamp: Oct 10 2023 14:30:00
File: example.c
Line: 10
Function: main
STDC: 1
STDC Version: 201112
这些宏定义在调试、日志记录和版本信息记录中非常有用。
reference: 系统常用宏定义__TIME__ DATE __LINE__等