【问题标题】:How can I write a C #if directive that branches based on the current date如何编写基于当前日期分支的 C #if 指令
【发布时间】:2017-10-24 19:15:42
【问题描述】:

我想要的是这样的功能:

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

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

有什么办法吗?

【问题讨论】:

    标签: c macros compile-time-constant


    【解决方案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 预处理器的整数运算进行比较。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多