我正在为我的应用程序使用Boost(1.47.0自编译)和MinGW 4.6(用于C ++ 0x功能),但我在Boost的JSON解析代码中收到了大量警告(我使用-Werror)。 / p>
我在Linux或MSVC中没有出现这些错误(MSVC Boost是从完全相同的源代码树自编译的)。以下是错误及其指向的行。
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;
}
这些错误看起来很合理,但有一种我缺少的解决方法吗?
答案 0 :(得分:1)
关于第一个,我猜'b'被定义为'char *'? char默认为unsigned或signed是编译器相关的AFAIK。有可能mingw将char默认为signed,使得与0x0FF的比较超出可能的范围。
第二个是不言自明的,警告正在做它应该做的事情,你应该只是禁用那个警告。