【问题标题】:need some help in compiling a jsoncpp sample code在编译 jsoncpp 示例代码时需要一些帮助
【发布时间】:2015-10-23 22:37:37
【问题描述】:

我正在尝试编译一个示例 jsoncpp 示例,但在“标准”标头中显示了大量编译错误。有没有人看到过这个?

[~]$ g++ -g -c json.cc -I/usr/local/include/json 
In file included from /usr/include/libio.h:62,
                 from /usr/include/stdio.h:75,
                 from /usr/lib/gcc/i686-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstdio:45,
                 from json.cc:1:
/usr/include/sys/cdefs.h:46:44: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:50:44: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:135:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:151:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:209:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:218:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:227:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:236:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:248:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:258:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:267:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:275:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:289:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:297:43: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:326:19: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:338:20: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:343:20: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:350:19: error: missing binary operator before token "("
In file included from /usr/lib/gcc/i686-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstring:45,
                 from json.cc:2:

【问题讨论】:

    标签: jsoncpp


    【解决方案1】:

    对我来说,json-cpp 中包含的 features.h 与其他一些包含中的系统 features.h 冲突。我在 json-cpp 代码中将它本地重命名为 json_features.h,一切都很好。

    【讨论】:

      【解决方案2】:

      您需要使用这种方式包含头文件: #include "json/json.h"

      【讨论】:

        【解决方案3】:

        如果您使用-I.../include/json 进行编译,则标准库可能会意外包含 JSON 标头。 (在这种情况下,根据 asuter 的说法,它是features.h。)

        父目录是头文件的一种“命名空间”。这就是为什么 any 库具有像 incdir/foo/bar.h 这样的标头的良好做法是 -Iincdir#include <foo/bar.h>

        【讨论】:

          【解决方案4】:

          检查 JSON 包含路径。在编译选项中使用-I/path of JSON include directory,例如-I$(pkg-config --cflags jsoncpp).

          【讨论】:

          • 这是问题的原因:包括来自/usr/include/json,因此jsoncpp的value.h优先于gcc的value.h,导致这些确切的错误。跨度>
          【解决方案5】:

          如果您前面的一个标头有语法错误,例如在类声明末尾缺少;,就会发生这种情况。从清理这些开始。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-02-25
            • 1970-01-01
            • 2013-01-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-21
            相关资源
            最近更新 更多