加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c预处理程序 – 如果在某个日期之后编译失败

发布时间:2020-12-16 05:49:30 所属栏目:百科 来源:网络整理
导读:如果在某个日期之后尝试,我想使某些文件的编译失败.原因是这样的:我发现了几个Y2K38错误,我现在没有时间修复,但是想对它们进行注释,我认为如果模块的编译会失败,那么这将是很好的,说,2020. (我可能会疯了,但这段代码是20岁,我怀疑它可能会再次生存30) 解决
如果在某个日期之后尝试,我想使某些文件的编译失败.原因是这样的:我发现了几个Y2K38错误,我现在没有时间修复,但是想对它们进行注释,我认为如果模块的编译会失败,那么这将是很好的,说,2020.
(我可能会疯了,但这段代码是20岁,我怀疑它可能会再次生存30)

解决方法

使用GCC,您可以执行以下操作:
void __attribute__((error("Whoa. It's the future"))) whoa_the_future();

void check_for_the_future() {
    // "Feb  1 2011"
    const char *now = __DATE__;
    if (now[9] >= '2')
        whoa_the_future();
}

这样做的方式是error属性告诉GCC生成
如果有任何调用该函数的编译时错误
代码完全是GCC的常数折叠,死码消除,和
类似的传球也跑了.由于DATE是编译时常数,
GCC可以在编译时评估if语句,并删除
呼叫.

至少有一个缺点是这取决于GCC的优化
通过,所以它不会在gcc -O0工作

老实说,你最好只是添加运行时检查在某处,失败快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读