如何编写基于当前日期分支的 C #if 指令
How can I write a C #if directive that branches based on the current date
我想要的是功能上像这样的东西:
#if TODAY<OCTOBER_31_2017
#define OK 0
#elif TODAY==OCTOBER_31_2017
#define OK 1
#else
#define OK 2
#endif
所以我希望 "OK" 具有相关的编译时值,具体取决于今天的日期。
有什么办法吗?
假设一个编译器接受 -D
选项和一个 POSIX shell/environment 调用它,你可以这样做:
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 预处理器的整数算法进行比较。)
我想要的是功能上像这样的东西:
#if TODAY<OCTOBER_31_2017
#define OK 0
#elif TODAY==OCTOBER_31_2017
#define OK 1
#else
#define OK 2
#endif
所以我希望 "OK" 具有相关的编译时值,具体取决于今天的日期。
有什么办法吗?
假设一个编译器接受 -D
选项和一个 POSIX shell/environment 调用它,你可以这样做:
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 预处理器的整数算法进行比较。)