如果在特定日期之后编译,则预处理器宏将删除代码

Hec*_*tor 4 gcc c-preprocessor

如果在特定日期之后编译,我希望不包括三行代码.原因是它们提供向后兼容性.为了支持客户端和嵌入之间的交错释放,现在必须在那里.

一旦下一个软件版本出现,将删除此支持以强制客户升级嵌入式软件.由于这是几个月之后,这些线路有被遗忘的风险.

理想情况下,我想要一个

#if __DATE__ > MyDate
    code here
#endif
Run Code Online (Sandbox Code Playgroud)

或类似的东西.有没有办法做到这一点?

*代码是用GCC编译的

Bat*_*eba 5

此解决方案专门用于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;
Run Code Online (Sandbox Code Playgroud)