如何编写基于当前日期分支的C #if指令

时间:2017-10-24 19:15:42

标签: c macros compile-time-constant

我想要的是功能如下:

#if TODAY<OCTOBER_31_2017
#define OK 0
#elif TODAY==OCTOBER_31_2017     
#define OK 1
#else     
#define OK 2
#endif

所以我希望“OK”具有相关的编译时间值,具体取决于今天的日期。

有什么办法吗?

1 个答案:

答案 0 :(得分:1)

假设一个接受-D选项的编译器和一个调用它的POSIX shell /环境,你可以这样做:

cc -DOCTOBER_31_2017=$(date -d 'Oct 31 2017' +%s) \
   -DTODAY=$(date -d now +%s) \
    yourfile.c

并且您的预处理器代码应该可以工作。

date +%s将日期打印为UNIX时间戳(自1970-01-01 00:00:00 UTC以来的秒数),这应该允许您将它们与C预处理器的整数算术进行比较。)