3

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

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

我尝试在互联网上寻找它并询问了我的大多数朋友,但这个看起来对他们来说也很陌生。那么,伙计们,这句话的真正作用是什么?

4

2 回答 2

5

它可以用来删除有关未使用参数的警告。但从逻辑上讲,它什么也没做。有更好的方法可以删除有关未使用参数的警告。使用宏:

UNREFERENCED_PARAMETER( param );

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

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

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

于 2013-05-29T10:10:31.330 回答
3

它可能是为了消除关于“未使用的形式参数”的编译器警告。也就是说,该参数(当前)未在函数中的其他任何地方使用,因此引入此使用以消除警告。

还有其他几种方法可以做到这一点,例如将其转换为void

(void)param;

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

这就是为什么我更喜欢注释掉不使用的参数名称。标识符保留在那里以提高代码可读性,但不会给出警告,如果您稍后更改代码以使用该参数,则必须显式取消注释,否则会出错。

于 2013-05-29T10:09:56.377 回答