如何警告C中void指针的参数的不兼容类型?

jum*_*eno 1 c c++ gcc

在下面的一个例子中,我想知道func带有错误类型参数的调用 - vptr应该用int指针调用.

void func(int * ptr){
}
int main(){
    void * vptr;
    func(vptr);
}
Run Code Online (Sandbox Code Playgroud)

即使有墙式选项,海湾合作委员会也不会警告这类警告.在gcc中还有其他任何选项,或其他编程技巧来找出那些不良的代码方式.除此之外,在cpp怎么样?

编辑:VTT回答这在C中有效,但在C++中无效,没有其他类似的演员关键字static_cast(详见其他帖子).

use*_*670 6

在C中,它是一个有效的隐式转换.在C++中,这种转换至少需要static_cast并且会导致编译时错误(或者甚至是两次static_cast以避免潜在的严格别名规则违规).你应该找出你实际使用的语言.

  • 这是要求澄清问题; 它应该是一个评论. (2认同)