MinGW 和 Boost 警告错误?
我在我的应用程序中使用 Boost(1.47.0 自编译)和 MinGW 4.6(用于 C++0x 功能),但在 Boost 的 JSON 解析代码中收到大量警告(我使用 -Werror)。
我在 Linux 或 MSVC 中没有遇到这些错误(MSVC Boost 是从完全相同的源代码树自编译的)。以下是错误及其指向的行。
boost\property_tree\detail\json_parser_write.hpp|35|error:由于数据类型范围有限[-Werror=type-limits],比较始终为真
if (*b == 0x20 || *b == 0x21 || (*b >= 0x23 && *b <= 0x2E) ||
(*b >= 0x30 && *b <= 0x5B) || (*b >= 0x5D && *b <= 0xFF))
result += *b;
boost\property_tree\detail\json_parser_read .hpp | 115 | error:未使用的参数'e' [-Werror = unused-parameter]
void operator()(It b, It e) const
{
c.string += *b;
}
这些错误似乎听起来不错,但是有没有我缺少的解决方法?
I'm using Boost (1.47.0 self compiled) and MinGW 4.6 (for C++0x features) for my application, but I get a load of warnings (I use -Werror) in Boost's JSON parsing code.
I don't get these errors on Linux or in MSVC (MSVC Boost is self compiled from the exact same source tree). Here are the errors and the lines they point to.
boost\property_tree\detail\json_parser_write.hpp|35|error: comparison is always true due to limited range of data type [-Werror=type-limits]
if (*b == 0x20 || *b == 0x21 || (*b >= 0x23 && *b <= 0x2E) ||
(*b >= 0x30 && *b <= 0x5B) || (*b >= 0x5D && *b <= 0xFF))
result += *b;
boost\property_tree\detail\json_parser_read.hpp|115|error: unused parameter 'e' [-Werror=unused-parameter]
void operator()(It b, It e) const
{
c.string += *b;
}
The errors seem sound, but is there a workaround that I'm missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关于第一个问题,我猜测“b”被定义为“char *”? char 默认为无符号还是有符号取决于编译器。 mingw 可能会将 char 默认为有符号,从而使与 0x0FF 的比较超出了可能的范围。
第二个是不言自明的,警告正在执行它应该执行的操作,您可能应该禁用该警告。
Regarding the first, I am guessing 'b' is defined as 'char *'? Whether char defaults to unsigned or signed is compiler-dependant AFAIK. It is possible mingw is defaulting the char to signed, making the comparisons with 0x0FF outside the possible range.
The second is self-explanatory, the warning is doing exactly what it is supposed to be doing, you should probably just disable that warning.