只有变量名的语句

时间:2013-05-29 10:08:13

标签: c++ variables

我刚刚在研究他的代码片段时看到一个人做了这个:

void doSomething(int param) {
    // stuffs
    param; // <-- what does this statement do?
    // stuffs
}

我试着在互联网上寻找它,并向我的大多数朋友询问了这个问题,但这个问题对他们来说也很陌生。那么伙计们,这个陈述到底有什么用呢?

2 个答案:

答案 0 :(得分:5)

可能会删除有关未使用参数的警告。但从逻辑上讲它什么都不做。有更好的方法可以删除有关未使用参数的警告。使用宏:

UNREFERENCED_PARAMETER( param );

或者从函数中删除参数的名称:

void doSomething(int /*param*/) { ... 

我更喜欢后者,因为这意味着绝对不会使用param。我已经看到了UNREFERENCED_PARAMETER被指定的实例,然后在代码中实际使用了该参数。

答案 1 :(得分:3)

可能是因为“未使用的形式参数”而无法编译警告。也就是说,该参数(当前)未在函数中的任何其他位置使用,因此引入此用法以删除警告。

还有其他几种方法可以做到这一点,例如:将其投射到void

(void)param;

然而,它们都有同样的缺点:如果实际使用参数,它们同样有效。所以你很有可能在函数的顶部看到它们,想一想“好吧,它没有使用param”,然后当 稍后使用它时会感到惊讶。

这就是为什么我更喜欢注释参数名称,如果没有使用它。标识符保留在那里以便于代码可读性,但没有给出警告,如果您稍后更改代码以使用参数,则必须明确取消注释它或者您收到错误。