发出“未引用形式参数”警告的原因是什么?在an existing SO post中,解释了此警告对于引起程序员注意函数(以防他忘记对参数执行一些操作)有用,并且对代码维护也很有用(向未来的开发人员发出该信号未被省略,但故意遗漏了)。除了风格问题之外,为什么程序员希望对未使用的参数提出警告?如果按值传递,这些参数是否被复制?为什么“未引用的形式参数”担心我?
void myFunction(int param) {
}
发出“未引用形式参数”警告的原因是什么?在an existing SO post中,解释了此警告对于引起程序员注意函数(以防他忘记对参数执行一些操作)有用,并且对代码维护也很有用(向未来的开发人员发出该信号未被省略,但故意遗漏了)。除了风格问题之外,为什么程序员希望对未使用的参数提出警告?如果按值传递,这些参数是否被复制?为什么“未引用的形式参数”担心我?
void myFunction(int param) {
}
为了防止可能发生的干扰(忘记使用参数),争取一个更易于维护的代码足够的理由。
未被使用的参数被复制的可能的性能影响是另一个原因,但不是主要原因。
虽然没有指定,但我希望在函数定义中省略参数名称不会更改任何二进制代码。
仅具有可用功能声明的编译单元将不知道是否复制该参数。其他编译单元可以对函数调用应用正常的优化,任何值得任何salt的优化器都会发现参数在函数的开始处是死的。
因此,我不担心这里的表现。纯粹的原因是可读性。
如果通过值传递,它们将被复制。 – Mahesh 2012-03-16 11:54:03
你可以摆脱'param',所以你只剩下'void myFunction(int)',虽然这可能会让人困惑。有时你会看到注释掉的参数'void myFunction(int/* param * /)',但我不愿在C++代码库中使用C风格的注释。 – 2012-03-16 12:50:10