在我的C99标准文件中(实际上是2007年9月的免费委员会草案),公共警告2附录I中指出:
当出现隐式缩小转换时,例如将长整型或双精度浮点型赋值给整数,或将指针转换为除字符类型以外的任何类型的指针时(6.3),这是实现可能生成警告的常见情况之一。
那么,一个C编译器是否应该会对
当出现隐式缩小转换时,例如将长整型或双精度浮点型赋值给整数,或将指针转换为除字符类型以外的任何类型的指针时(6.3),这是实现可能生成警告的常见情况之一。
那么,一个C编译器是否应该会对
int *p = malloc(sizeof(*p))
这样的代码发出警告呢?虽然在C代码中不对malloc
进行强制转换似乎更常见。
malloc
的结果分配给不适当的近指针,就会收到一个警告。 - Kerrek SB