出于好奇,我想知道标准__TIME__
预处理器宏给出的值是否可以在单个翻译单元中更改?
换句话说,__TIME__
在预处理过程中确定一次然后是固定的,还是每次遇到它时都会重新评估?
如果C标准未指定,主要实现(gnu,clang,intel,msvc)中是否存在事实上的标准行为?
答案 0 :(得分:5)
C没有严格指定“翻译时间”在整个预处理/编译过程中是不变的。
我的经验是不变的。但由于它只是第二个,因此给定的编译需要越过第二个边界才能有所不同。
__TIME__
预处理翻译单元的翻译时间:"hh:mm:ss"
形式的字符串文字,与asctime
功能。如果没有翻译时间, 应提供实施定义的有效时间。 C11§6.10.8.11
__DATE__
和__TIME__
的定义分别为日期和时间 翻译时间不可用(6.10.8.1)。 (资料性附录)C11§J.3.111