C语言 预处理器宏是否保证__TIME__文件中是常量



只是出于好奇,我想知道标准__TIME__预处理器宏给出的值是否可以在单个翻译单元中更改?

换句话说,__TIME__是在预处理过程中确定一次然后修复,还是每次遇到时重新评估?

如果C标准没有规定这一点,那么在主要实现(gnu,clang,intel,msvc)中是否存在事实上的标准行为?

C 没有严格指定"翻译时间"在整个预处理/编译过程中是恒定的。

我的经验是它一直是不变的。 但是由于它只是第二个,所以给定的编译需要跨越第二个边界才能有所不同。

__TIME__ 预处理翻译单元的翻译时间:形式"hh:mm:ss"的字符串文字,如生成的时间 asctime功能。如果翻译时间不可用,则 应提供实施定义的有效时间。C11 §6.10.8.1 1

__DATE____TIME__的定义分别是日期和 翻译时间不可用(6.10.8.1)。 (信息量)C11 §J.3.11 1

相关内容

最新更新