c++ - 为什么使用 void(unused) (和类似的)而不是无名参数来消除 C++ 函数中的未使用变量警告?

标签 c++ function

<分区>

所以我知道在 C++ 中将变量标记为未使用的两种方法:

首先(在函数体中)

void func1(int i, int unused) {
  (void)unused; //marking 'unused' here

  i++;
}

和类似物

第二个(在函数的参数列表中)

void func2(int i, int /* marking 'unused' here */ ) {
  i++;
}

在我看来,第二个要好得多,因为它:

  1. 通知函数声明中未使用的变量(无需 见实现)
  2. 使得无法实际使用这个变量
  3. 使代码更清晰(这是主观的)

此外,为这两个函数生成的汇编代码是相同的(使用 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

关于c++ - 为什么使用 void(unused) (和类似的)而不是无名参数来消除 C++ 函数中的未使用变量警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904581/

相关文章:

function - 为什么在构建小部件之前,我的initState()不调用使用sharedprefs的函数?

javascript - 使用 jQuery 突出显示单词的父级?

c++ - 使用 Boost::units 在两个数量之间进行转换的最简单方法?

c++ - 原子操作、std::atomic<> 和写入顺序

javascript - 将 JavaScript for 循环集成到自定义函数中

比较高值和低值以调用函数

c++ - 我的链表的 Erase() 函数中的错误

c++ - 为什么将函数转换为除返回类型外相同的函数类型会失败?

C++ 类变量不会保留从另一个类传递的二维对象数组的值

swift - 如何修复此无法识别的选择器发送到实例错误?