实现存根等时,您希望避免使用“未使用的变量”警告。多年来我遇到过UNUSED()宏的一些替代方案,但从来没有一个被证明适用于“所有”编译器,或者标准是气密的。
或者我们是否坚持使用每个构建平台的#ifdef块?
编辑:由于许多非c兼容替代品的答案,我想澄清我正在寻找一个对C和C ++都有效的定义,所有口味等
答案 0 :(得分:32)
根据this answer user GMan {em>典型方式转换为void
:
#define UNUSED(x) (void)(x)
但是如果x
被标记为volatile
,那将强制从变量读取并因此产生副作用,因此几乎保证无操作并抑制编译器警告的实际方法是以下内容:
// use expression as sub-expression,
// then make type of full expression int, discard result
#define UNUSED(x) (void)(sizeof((x), 0))
答案 1 :(得分:1)
在C ++中,只需注释掉名称。
void MyFunction(int /* name_of_arg1 */, float /* name_of_arg2*/)
{
...
}
答案 2 :(得分:-2)
通用方法不是打开警告选项,垃圾邮件警告清晰正确的代码。在其分析中包含函数参数的任何“未使用的变量”警告选项只是错误,应该保持关闭状态。不要用丑陋的方式乱丢你的代码来安静破碎的编译器。
您也可以尝试向编译维护者/供应商发送错误报告。