如果在某个日期之后编译,我希望不包含三行代码。
原因是它们提供向后兼容性。为了支持客户端和嵌入之间的交错发布,它现在必须存在。

一旦下一个软件版本出现,这种支持将被取消,以迫使客户升级嵌入式软件。由于这是几个月之后,这些线路可能会被遗忘。

所以理想情况下我想要一个

#if __DATE__ > MyDate
    code here
#endif

或等价的东西。
有没有办法做到这一点?

*代码使用GCC编译

最佳答案

此解决方案专门针对 Windows 平台,是我在生产中使用的解决方案。

我利用环境变量 %DATE%,在用于启动我的 IDE 的批处理文件中,我有 VA_CURRENT_DATE=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%(其中转换为我的特定语言环境的 ISO8601 日期)。

然后在我的项目的预处理器定义中,我将 VA_BUILD_DATE 定义为 VA_CURRENT_DATE

然后我有一些代码,如:

long day = VA_BUILD_DATE;
long year = day / 10000;
day -= year * 10000;
long month = day / 100;
day -= month * 100;

关于gcc - 如果在某个日期之后编译,则预处理器宏将删除代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18639004/

10-13 02:28