【发布时间】:2021-02-15 13:17:43
【问题描述】:
是否有可能在 Microsoft Visual Studio 中重新定义 __DATE__ 和 __TIME__ 预定义的 C++ 宏(赋予它们而不是默认值)?
我尝试了编译器选项/D "__DATE__=\"Feb 10 2021\"",但我得到了:
pch.cpp : warning C4117: macro name '__DATE__' is reserved, '#define' ignored
而且没有效果。除了修改代码(或确认“不可能”)之外的任何想法?
原因:我拥有的 C++ 项目的构建版本由日期宏值(每个构建版本都从 __DATE__/__TIME__ 值中获取)。我需要模拟一个“较旧”的构建 - 基本上是为了欺骗这个版本控制系统。我不需要更改宏值格式。我还知道@Jabberwocky 提到的另一个用户定义宏的选项。
【问题讨论】:
-
您可以使用
#undef __DATE__和#undef __TIME__取消定义宏,以便给它一个不同的值。 -
所有带有两个前导下划线的符号都保留用于实现。创建这样的符号就是UB。来源:timsong-cpp.github.io/cppwp/lex.name#3
-
这是XY problem 的经典例子。为什么你需要这样做?你的实际目标是什么?
-
@Locke 不,出于同样的原因,这也不起作用
-
如果这个问题是单事件问题,那么只需更改构建期间的系统时间。最好的解决方案是应用
Jabberwockys answear。
标签: c++ visual-studio datetime compilation macros