我希望给定的例子会导致编译器警告,因为存在从error_t到int的隐式转换。
我使用的是带有C的ARM的segger-Crang编译器,而不是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);
}
typedef
只是类型的别名,因此error_t
与uint32_t
相同。因此,不会对转换发出任何警告。
只有在可能丢失精度的情况下,并且只有在启用了-Wall
和-Wextra
中未包含的某些选项时,才会出现算术类型之间的类型转换警告。