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

时间:2017-05-26 10:18:40

标签: c++ c gcc

在下面的示例中,我想知道func使用错误类型的参数调用vptr,应使用int指针调用它。

void func(int * ptr){
}
int main(){
    void * vptr;
    func(vptr);
}

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

编辑: VTT回答此问题在C中有效,但在C ++中无效,没有其他投射关键字,例如static_castsee the other post in detail)。

1 个答案:

答案 0 :(得分:6)

在C中,它是一个有效的隐式转换。在C ++中,此类转换至少需要static_cast,否则会导致编译时错误(或甚至几个reinterpret_cast以避免潜在的严格别名规则违规)。你应该找出你实际使用的语言。