gcc 预处理器 __DATE__ 和 __TIME__ 打印到终端

问题描述 投票:0回答:1

我在代码中使用;

const char compileDate[]      = {__DATE__};
const char compileTime[]      = {__TIME__};

但我只能在运行程序时看到这些值。编译后是否可以看到日期和时间值?我想做这样的东西:

gcc main.c
date&time: "29 Feb 2018 16:32:55"
a.out created

当然代码中和终端输出中的日期和时间必须相同。

gcc terminal preprocessor
1个回答
0
投票

您无法让编译器执行此操作,但您可以使用外部脚本来执行此操作,定义您自己的宏来代替

__TIME__
__DATE__

例如,在 UNIX shell 中:

date '+%b %e %Y %I:%M:%S' >xxx
cat xxx xxx | sed -n -e '1s/^\(...........\).*/#define MY_DATE "\1"/p' -e '2s/.*\(........\)$/#define MY_TIME "\1"/p' > xxx.h
cat xxx

将打印日期

Oct 27 2023 09:37:48
,并创建一个头文件,xxx.h,其中包含

#define MY_DATE "Oct 27 2023"
#define MY_TIME "09:37:48"

然后您的代码就可以使用它。

© www.soinside.com 2019 - 2024. All rights reserved.