MinGW 和 Boost 警告错误?

发布于 2024-12-03 02:19:46 字数 818 浏览 2 评论 0原文

我在我的应用程序中使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青春有你 2024-12-10 02:19:46

关于第一个问题,我猜测“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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文