是否有可能获得编译时的时间(当天)和日期?

Ant*_*nio 10 c c++ unix windows compilation

有什么可能在编译时知道时间和日期(BUILDTIME),以便以可移植的方式在二进制文件(可执行文件/库)中包含有关它们创建时刻的信息?

我们目前有一个使用sh.exe的解决方案,并且需要在Windows下安装msys,但我想知道是否可以不使用它.

搜索"构建时间/日期","编译时间/日期"等内容并未导致任何相关结果.

编辑:

当我了解时__TIME__,之后可能会发现此问题:记录编译源的时间

Mat*_*get 12

标准宏__DATE____TIME__完成工作.

请注意,这将为您提供使用它们的文件的编译日期.不是链接日期.因此,touch每次构建文件时都必须使用该文件,或者在MSVC中执行预构建步骤.

C99标准说:

6.10.8预定义的宏名称

以下宏名称应由实现定义:

  • __DATE__:预处理翻译单元的翻译日期:"Mmm dd yyyy"形式的字符串文字,其中月份的名称与asctime函数生成的相同,dd的第一个字符是空格如果值小于10,则为字符.如果没有可用的翻译日期,则应提供实现定义的有效日期.
  • __TIME__:预处理翻译单元的翻译时间:形式为"hh:mm:ss"的字符串文字,与asctime函数生成的时间一样.如果没有翻译时间,则应提供实施定义的有效时间.

我在这里复制了C99文本,但是这些宏比C99还要老......我没有找到旧版C的标准文本...