【问题标题】:Why should "unreferenced formal parameter" worry me?为什么“未引用的形式参数”应该让我担心?
【发布时间】:2012-03-16 11:52:21
【问题描述】:

发出“未引用的形式参数”警告的原因是什么?在an existing SO post 中,此警告被解释为有助于将程序员的注意力吸引到函数上(以防他忘记对参数进行某些操作),也有助于代码维护(向未来的开发人员发出信号表明该参数是没有省略,而是故意省略了)。除了样式问题,为什么程序员想要警告未使用的参数?如果按值传递,这些参数是否被复制?

void myFunction(int param) {
}

【问题讨论】:

  • 如果是传值,则被复制。
  • 你可以去掉param,所以你只剩下void myFunction(int),尽管这可能会让人困惑。有时你会看到注释掉的参数void myFunction(int /*param*/),但我不愿意在 C++ 代码库中使用 C 风格的 cmets。

标签: c++ compiler-construction compilation


【解决方案1】:

防止可能的分心(忘记使用参数)和争取更可维护的代码就足够了。

复制未使用的参数可能对性能造成影响是另一个原因,但不是主要原因。

【讨论】:

    【解决方案2】:

    虽然没有指定,但我敢打赌,在函数定义中省略参数名称不会更改任何二进制代码。

    只有函数声明可用的编译单元将不知道是否复制参数。其他编译单元可以对函数调用应用正常优化,任何值得任何盐分的优化器都会发现参数在函数开始时就死了。

    因此,我不会担心这里的性能。纯粹的原因是可读性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多