我正在尝试用C++解析JSON。我的Makefile看起来如下:
LDFLAGS = -L/home/ting/Temp/code/jsoncpp/libs/linux-gcc-5.4.0/ ./jsoncpp/libs/linux-gcc-5.4.0/libjson.a ./jsoncpp/libs/linux-gcc-5.4.0/libjson.so
INC = -I/home/ting/Temp/code/jsoncpp/include/json
CC=g++
CFLAGS = -std=c++11
main: main.cpp
$(CC) -o $@ $(LDFLAGS) $(INC) $^ ${CFLAGS}当我简单地使用#include "json.h"时,编译器会给出大量的错误。我刚选了一些:
/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:44:19: error:
missing binary operator before token "("
#if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE)
^
In file included from /usr/include/c++/5/cwchar:44:0,
from /usr/include/c++/5/bits/postypes.h:40,
from /usr/include/c++/5/iosfwd:40,
from /usr/include/c++/5/ios:38,
from /usr/include/c++/5/istream:38,
from /usr/include/c++/5/fstream:38,
from main.cpp:1:
/usr/include/wchar.h:74:43: error: missing binary operator before token "("它看起来没有任何错误的libs。但是,只有当我链接到jsoncpp库并在Makefile中添加其包含dir时,才会出现此问题。
我很困惑,发生什么事了?
发布于 2017-11-06 16:06:18
你的jsoncpp必须是这样的:
#include <json/json.h>您的包含路径必须以包含dir结束,这样:
INC = -I/home/ting/Temp/code/jsoncpp/include如果省略包含中的json,并将其添加到INC变量中,编译器最终将从json目录中选择一个.h,而不是所需的glibc的ures.h,后者会产生类似于您发布的错误(请注意,glibc中的ures.h定义了__GLIBC_PREREQ宏)。
https://stackoverflow.com/questions/47140028
复制相似问题