2012-04-21 4 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', так что' значение.h' jsoncpp имеет приоритет над значением gcc 'value.h', вызывает эти точные ошибки. – user2394284

3

Для меня это были функции.h, включенные в json-cpp, конфликтующие с функциями system.h в некоторых других. Я переименовал его локально в json_features.h в коде json-cpp, и все было хорошо.

1

Вам необходимо включить заголовочный файл, используя этот способ: #include «JSon/json.h»

1

Если вы компилируете с -I.../include/json, то стандартная библиотека может случайно включить заголовок JSON. (В этом случае, согласно asuter, это был features.h.)

Родительский каталог является своего рода «пространством имен» для файлов заголовков. Вот почему хорошая практика для любая библиотека с заголовками вроде incdir/foo/bar.h is -Iincdir и #include <foo/bar.h>.

 Смежные вопросы

  • Нет связанных вопросов^_^