为什么在c++函数中使用void(未使用)(和类似的)而不是没有名称的参数来消除未使用变量的警告
Why to use void(unused) (and similar) instead of no-name parameter to silence unused-variables warnings in C++ function?
所以我知道在c++中将变量标记为未使用的两种方法:
第一个(在函数体中)
void func1(int i, int unused) {
(void)unused; //marking 'unused' here
i++;
}
和相似导线
第二个(在函数的参数列表中)
void func2(int i, int /* marking 'unused' here */ ) {
i++;
}
在我看来,第二个更好,因为它:
- 通知函数声明中未使用的变量(不需要)
- 使得不可能实际使用这个变量
- 使代码更清晰(这是主观的)
另外,为这两个函数生成的汇编代码是相等的(用gcc 4.9.2测试),所以这也不是关于性能折衷的问题。
鉴于此,我的问题是:为什么使用第一个如此普遍?
如果使用c++,则允许使用Second。如果你有一些C遗留:第二个实际上是非法的。
代码:int foo(int) {
int i=0;
return i;
}
输出:$ gcc -c -ansi -pedantic main.c
main.c: In function 'foo':
main.c:1:1: error: parameter name omitted
一个可能的原因是某些工具在声明参数和定义参数不匹配时发出警告。或者当特殊注释中的参数与声明/定义中的参数不匹配时(如氧)。
相关文章:
- 如何仅使用对象名称打印特定于对象的成员
- "(void) cast"与功能有什么区别 "__attributes__"来沉默未使用的参数警告?
- 拥有这个未使用的函数 Init 有什么意义
- 就地赋值和再次使用变量名称的赋值有什么区别?
- C :将外部链接与未命名的名称空间使用常数变量
- GCC 警告未使用的静态函数,但不警告静态内联:是否有实际区别?
- 使用未命名的名称空间会减少链接时间吗
- SWIG:未使用%module或-module指定模块名称
- qt-creator 中有没有办法检查未使用/死的代码
- 为什么模板类会有一个未使用的类型
- 虚函数的参数未在所有子类中使用;有什么更好的设计方法吗?
- 有没有办法在make命令中找到未使用的定义和结构
- 函数未使用与类相同的名称调用
- 将未使用的动态加载库链接到c++应用程序构建中有什么缺陷(如果有的话)?
- 为什么在c++函数中使用void(未使用)(和类似的)而不是没有名称的参数来消除未使用变量的警告
- 可以在函数内使用未命名的名称空间而不是静态变量吗?
- 是否有任何工具/方法来检测/删除所有未使用的变量,宏,头(包括)和函数从c++代码
- 是否有办法忽略未使用的未定义引用
- 删除函数定义中未使用的参数名称(编码标准)
- 在标头中使用未命名的名称空间将如何导致odr违规