我希望给定的示例导致编译器警告,因为存在从 error_t 到 int 的隐式转换。
我使用的是带有 C 的 ARM 的 segger clang 编译器,而不是 C++。
typedef uint32_t error_t ;
error_t Test(error_t test){
return test;
}
int main(){
error_t e = 0;
uint32_t t32 = Test(e);
}
答案 0 :(得分:0)
typedef
只是类型的别名,因此 error_t
与 uint32_t
相同。因此,转换不会有警告。
算术类型之间的类型转换警告只会在可能损失精度的情况下发生,并且只有启用了 -Wall
和 -Wextra
中未包含的某些选项。