Gsoap 向我提供与 -Wsign-conversion 相关的警告,因为 gsoap 源文件是自动生成的,我无法解决这些警告。有人可以用这个来取悦我吗?预先感谢。
64 位警告示例
警告:从 int 转换为 long unsigned int 可能会更改结果的符号 [-Wsign-conversion]
char *a = (char*)soap_malloc((soap), (n = (n < 0 ? 1 : n)) * sizeof(char));
32 位警告示例
警告:从 int 转换为 unsigned int 可能会更改结果的符号 [-Wsign-conversion]
char *a = (char*)soap_malloc((soap), (n = (n < 0 ? 1 : n)) * sizeof(char));
我浏览了他们的文档,但对于上述警告没有太多帮助。
忽略警告。它是生成的代码,您无法更改它。
但是,您可以很容易地看出它是误报:测试
n = (n < 0 ? 1 : n)
专门保证转换前的数字为正;所有负数都变成 1
。
当有符号值保证为正数时,将有符号 32 位或 64 位
int
转换为无符号等效值不会有危险。