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

如何编写基于当前日期分支的C#if指令,c,macros,compile-time-constant,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 #如果今天假设一个编译器接受-D选项和调用它的POSIX外壳/环境,那么您可以执行以下操作: cc -DOCTOBER_31_2017=$(date -d 'Oct 31 2017' +%s) \ -DTODAY=$(date

我想要的是这样的功能:

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

#如果今天假设一个编译器接受
-D
选项和调用它的POSIX外壳/环境,那么您可以执行以下操作:

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预处理器的整数算法进行比较。)