2012-04-21 81 views
1

我试图编译一个示例jsoncpp示例,但是在“标准”头文件中显示了大量的编译错误。任何时候有任何机构能看到这个?在编译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: 

回答

0

这之类的话,如果你的头在它之前有一个语法错误的一个会发生,如在类声明的末尾缺少;说。开始清理这些。

1

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

+0

这是问题的原因:从'/ usr/include/json'包含,这样jsoncpp的'value.h'优先于gcc的''value.h',导致这些确切的错误。 – user2394284 2016-05-30 19:07:56

3

对我来说,它是包含在json-cpp中的features.h与系统features.h相冲突的一些其他内容。我在本地将它重命名为json-cpp代码中的json_features.h,并且一切正常。

1

您需要包括使用这样的头文件: 的#include“JSON/json.h”

1

如果用-I.../include/json编译,那么标准库中可能会意外包含一个JSON头。 (在这种情况下,根据asuter,它是features.h。)

父目录是一种头文件的“名称空间”。这就是为什么任何带有如incdir/foo/bar.h标题的库的良好做法是-Iincdir#include <foo/bar.h>