【发布时间】:2015-09-13 20:43:38
【问题描述】:
假设我有一个在源代码中用 extern 定义的变量 date,即 extern date; 然后我想在链接时为它分配一个值,从编译它的计算机获取时间并分配给日期变量。 有没有办法做到这一点,例如在 gcc 中?
【问题讨论】:
假设我有一个在源代码中用 extern 定义的变量 date,即 extern date; 然后我想在链接时为它分配一个值,从编译它的计算机获取时间并分配给日期变量。 有没有办法做到这一点,例如在 gcc 中?
【问题讨论】:
__TIME__ 和 __DATE__ 是您要找的吗?
如果编译和链接是您方案中的一个步骤,您可以让编译器和链接器将这些宏替换为日期和时间。如果您一天编译并链接另一天,这将不起作用,因为编译器(更好:预处理器)决定插入哪个值。
查看 this 或 stackoverflow 上的其他帖子。
【讨论】:
-D选项传递符号定义,其值从外部shell命令格式化,如date。
可以在链接命令之前将带有 date 命令输出的日期变量通过管道传输到 gcc 中,因此变量 date 包含当前链接的日期和时间。 gcc 从管道中读取 C 源代码的选项是-xc -。
/* hello.c */
#include <stdio.h>
int main(void)
{
extern char const date[];
printf("Hello, link date is %s\n", date);
return 0;
}
$ gcc -c hello.c
$ echo "char const date[] =\"`date`\";" | gcc -c -xc - -o date.o;gcc hello.o date.o
$ ./a.out
Hello, link date is Sat Jun 27 11:59:19 CEST 2015
$
【讨论】: