什么"(void)指针;"用c ++表示?

时间:2013-03-20 15:41:27

标签: c++ pointers

有一些c ++代码

struct data {
    /* some fields */
};

typedef struct data * pData;

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

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

只是为了您的信息,有一些int / char * / etc,一些函数指针在结构中用作回调函数。

4 个答案:

答案 0 :(得分:10)

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

如果你确实使用了变量,那就是无操作。

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

比照

更新

仅仅因为没有提到它:变量的类型可能是任何东西。它不受指针类型的限制。

答案 1 :(得分:6)

它并不意味着很多。

它评估表达式pointer,然后通过将其强制转换为void来明确忽略它。

有时你在试图说服编译器而不是警告未使用的参数时会看到这个结构,但是在你的代码中,参数已被使用,因为它是{{1 }} - 检查

答案 2 :(得分: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

答案 3 :(得分:0)

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

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

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