c – 如何’隐藏’虚假的“声明但从未使用过的”警告?

c – 如何’隐藏’虚假的“声明但从未使用过的”警告?,第1张

概述我正在使用Borland(AKA“Embarcodegearland”)C Builder 2007编译器,它有一个小错误,系统头文件中的某些静态const项可能导致虚假的“xyzzy声明但从未使用过”警告. 我正试图让我的代码100%免费警告,所以想要一种掩盖这些特殊警告的方法(注意 – 但不要只是关闭警告!) 另外,我无法修改头文件.我需要一种“伪造”物品使用的方式,最好不知道它们的类型. 例 我正在使用Borland(AKA“Embarcodegearland”)C Builder 2007编译器,它有一个小错误,系统头文件中的某些静态const项可能导致虚假的“xyzzy声明但从未使用过”警告.

我正试图让我的代码100%免费警告,所以想要一种掩盖这些特殊警告的方法(注意 – 但不要只是关闭警告!)

另外,我无法修改头文件.我需要一种“伪造”物品使用的方式,最好不知道它们的类型.

例如,将此函数添加到我的.cpp模块会修复这四个项目的警告,但它似乎有点“特别”.这样做有更好的,更好的自我记录方式吗?

static int fakeUse(){  return OneHour + OneMinute + Onesecond + OneMillisecond;}

编辑:亚历克斯建议这样的事情:

#pragma option push#pragma warn -8080#include "dateutils.hpp"#pragma option pop

…遗憾的是,由于编译器没有巧妙地管理警告状态,因此仍然显示消息.

编辑#2:AshleysBrain有一个很好的建议.我通过构建这样的“dateutils_fix.hpp”头文件来实现它:

#ifndef DATEUTILS_FIXH#define DATEUTILS_FIXH#include <dateutils.hpp>static voID FIX_DATEUTIL_WARNINGS(){    UNREFERENCED(OneHour);    UNREFERENCED(OneMinute);    UNREFERENCED(Onesecond);    UNREFERENCED(OneMillisecond);}#endif

…然后在我自己的代码中#including这个头而不是dateutils.hpp.

解决方法 引用变量的常用方法是这样的:
#define UNREFERENCED(x)  ((voID)x)// ...voID MyFunc(){    const int x = 5; // never used for whatever reason    UNREFERENCED(x); // stops compiler warning}

‘cast to voID’实际上意味着’对这个表达式什么都不做’所以应该等同于no-op.它也被视为对变量的引用,因此警告被静音.您需要将它放在函数代码中,因此类构造函数或启动方法可能会为您完成.我没有C Builder可以试用它,但这适用于其他编译器.

总结

以上是内存溢出为你收集整理的c – 如何’隐藏’虚假的“声明但从未使用过的”警告?全部内容,希望文章能够帮你解决c – 如何’隐藏’虚假的“声明但从未使用过的”警告?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1242429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存