在下面的示例中,我想知道func
使用错误类型的参数调用vptr
,应使用int
指针调用它。
void func(int * ptr){
}
int main(){
void * vptr;
func(vptr);
}
即使有墙选项,GCC也不会警告此类警告。在gcc中还有其他任何选项,或其他编程技巧来找出那些不良的代码方式。 除此之外,在cpp怎么样?
编辑:
VTT回答此问题在C中有效,但在C ++中无效,没有其他投射关键字,例如static_cast
(see the other post in detail)。
答案 0 :(得分:6)
在C中,它是一个有效的隐式转换。在C ++中,此类转换至少需要static_cast
,否则会导致编译时错误(或甚至几个reinterpret_cast
以避免潜在的严格别名规则违规)。你应该找出你实际使用的语言。