4

有一些c++代码

struct data {
    /* some fields */
};

typedef struct data * pData;

int function(pData pointer) {
    if(pointer == NULL)
        return ERROR;
    (void)pointer;
    /* other work */
}

“(空)指针”是什么意思?

仅供参考,有一些 int/char*/etc,一些函数指针用作结构中的回调函数。

4

4 回答 4

10

它用于规避未使用的变量警告。

如果您确实使用该变量,则它是无操作的。

大多数未使用的变量是参数,它们是实现回调函数签名所必需的,但在您的实际实现中不需要。

参照。

更新:

只是因为没有另外提及:变量的类型可能是任何东西。它不限于指针类型。

于 2013-03-20T15:43:14.827 回答
6

这并不意味着很多。

它对表达式求值pointer,然后通过将其强制转换为 来显式忽略它void

有时,当您试图说服编译器不要对未使用的参数发出警告时,您会看到此构造,但在您的代码中,该参数已被使用,因为它正在被NULL检查。

于 2013-03-20T15:43:24.513 回答
0

它将指针值转换为“无类型”值,或者它“没有类型”。

void foo(); // absent of a return value 
int bar(void); // absent of parameters
void *var; // Type of the variable pointed to is absent
(void) var; // The type of the variable is absent
于 2013-03-20T15:49:11.973 回答
0

这是抑制未使用变量编译器警告的典型方法。

但是,由于指针实际上用作if(pointer == NULL),我认为没有理由这样做。

如果我必须猜测,我会猜测 NULL 检查和返回是在警告抑制之后添加的。

于 2013-03-20T16:04:53.247 回答