当我尝试将gcc
值放入double
变量时,是否有int
标志来表示警告/错误?我目前设置了-Wall -Wextra -Werror
但是当我(例如)将double
传递给int
参数时,我仍然没有收到警告,即使我丢失了信息。
答案 0 :(得分:8)
您可以使用-Wconversion
选项。来自GCC的手册(强调我的):
警告可能会改变值的隐式转换。 这包括 实数和整数之间的转换,如x是double时的abs(x); 有符号和无符号之间的转换,如无符号ui = -1;和 转换为较小的类型,如sqrtf(M_PI)。不要警告 显式转换,如abs((int)x)和ui =(unsigned)-1,或者如果是 转换中的值不会像abs(2.0)那样改变。警告 关于有符号和无符号整数之间的转换可以被禁用 通过使用-Wno-sign-conversion。
这是状态提升GCC 4.8.2,而从GCC 4.9.0开始,您也可以使用-Wfloat-conversion
。
答案 1 :(得分:3)
是的,请使用-Wfloat-conversion
选项:
-Wfloat-conversion
警告隐式转换会降低实际值的精度。这包括从实数到整数的转换,以及从更高精度实数到更低精度实数值的转换。
-Wconversion
也启用了此选项。