关于代码int *a = (int *)malloc(12);的显式/隐式转换判定咨询
关于MISRA规则11.5与代码转换类型的解答
这行代码int *a = (int *) malloc( 12 );里的转换属于显式强制转换——因为代码中明确使用了(int *)强制转换操作符,主动将malloc返回的void*类型指针转换成int*类型。
MISRA规则11.5[A]触发的原因,是该规则禁止将void指针转换为对象指针(无论显式还是隐式)。这里需要区分的是:如果写成int *a = malloc(12);,那才是由编译器自动完成的隐式转换,而你给出的代码是标准的显式强制转换写法。
内容的提问来源于stack exchange,提问作者Zimo93
相关产品推荐
相关产品推荐

