当我尝试将代码从 32 位迁移到 64 位时,Gsoap 向我发出与 -Wsign-conversion 相关的警告,如何解决此警告?

问题描述 投票:0回答:1

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));

我浏览了他们的文档,但对于上述警告没有太多帮助。

c++ c soapui gsoap
1个回答
2
投票

忽略警告。它是生成的代码,您无法更改它。

但是,您可以很容易地看出它是误报:测试

n = (n < 0 ? 1 : n)
专门保证转换前的数字为正;所有负数都变成
1

当有符号值保证为正数时,将有符号 32 位或 64 位

int
转换为无符号等效值不会有危险。

© www.soinside.com 2019 - 2024. All rights reserved.