我刚刚在研究他的代码片段时看到一个人做了这个:
void doSomething(int param) {
// stuffs
param; // <-- what does this statement do?
// stuffs
}
我试着在互联网上寻找它,并向我的大多数朋友询问了这个问题,但这个问题对他们来说也很陌生。那么伙计们,这个陈述到底有什么用呢?
答案 0 :(得分:5)
可能会删除有关未使用参数的警告。但从逻辑上讲它什么都不做。有更好的方法可以删除有关未使用参数的警告。使用宏:
UNREFERENCED_PARAMETER( param );
或者从函数中删除参数的名称:
void doSomething(int /*param*/) { ...
我更喜欢后者,因为这意味着绝对不会使用param
。我已经看到了UNREFERENCED_PARAMETER
被指定的实例,然后在代码中实际使用了该参数。
答案 1 :(得分:3)
可能是因为“未使用的形式参数”而无法编译警告。也就是说,该参数(当前)未在函数中的任何其他位置使用,因此引入此用法以删除警告。
还有其他几种方法可以做到这一点,例如:将其投射到void
:
(void)param;
然而,它们都有同样的缺点:如果实际使用参数,它们同样有效。所以你很有可能在函数的顶部看到它们,想一想“好吧,它没有使用param
”,然后当 稍后使用它时会感到惊讶。
这就是为什么我更喜欢注释参数名称,如果没有使用它。标识符保留在那里以便于代码可读性,但没有给出警告,如果您稍后更改代码以使用参数,则必须明确取消注释它或者您收到错误。