1

サンプルの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:
4

5 に答える 5

4

私にとっては、json-cpp に含まれている features.h が他のインクルードのシステム features.h と競合していました。json-cpp コードでローカルに名前を json_features.h に変更しましたが、すべて問題ありませんでした。

于 2013-04-27T01:34:56.303 に答える
1

JSON インクルード パスを確認します。コンパイル オプションでは-I/path of JSON include directory、たとえば-I$(pkg-config --cflags jsoncpp).

于 2013-04-08T23:14:50.467 に答える
1

でコンパイルすると-I.../include/json、標準ライブラリに誤って JSON ヘッダーが含まれる可能性があります。(この場合、asuter によれば、それはfeatures.h.)

親ディレクトリは、ヘッダー ファイルの一種の「名前空間」です。そのため、 isやのようなヘッダーを持つライブラリの良い習慣です。incdir/foo/bar.h-Iincdir#include <foo/bar.h>

于 2015-02-16T23:40:18.820 に答える
0

これは、その前にあるヘッダーの 1 つに、;クラス宣言の最後に欠落しているなどの構文エラーがある場合に発生する種類のことです。それらをきれいにすることから始めます。

于 2012-05-24T01:06:38.817 に答える