不匹配的 C++ 标头版本

mismatched c++ header versions

本文关键字:版本 C++ 不匹配      更新时间:2023-10-16

我刚刚在我的 ubuntu 系统上安装了 g++ 4.8,以满足一些先决条件。 但是现在我看到一些像这样的c ++编译错误:

构建命令:
g++-4.8 -m64 -std=c++0x -c -g -I/usr/include/jsoncpp/json -std=c++0x -MMD -MP -MF build/Debug/GNU-Linux-x86/_ext/803384703/CharNode.o.d -o build/Debug/GNU-Linux-x86/_ext/803384703/CharNode.o ../doublets/CharNode.cpp

错误:

In file included from /usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:420:0,
             from /usr/include/c++/4.8/bits/stl_algobase.h:59,
             from /usr/include/c++/4.8/bits/stl_tree.h:61,
             from /usr/include/c++/4.8/map:60,
             from ../doublets/CharNode.h:13,
             from ../doublets/CharNode.cpp:9:
/usr/include/x86_64-linux-gnu/c++/4.8/bits/os_defines.h:44:19: error: missing binary operator before token "("
#if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE)
                  ^

好像在抱怨括号?

另外,(关于其他错误)我认为wchar.h(c99)和其他所有c++ 0x(C11)之间存在版本不匹配。任何想法如何获取 c11 标准标头并将其安装在 ubuntu 中?

固定。

问题出在构建命令中:

g++-4.8 -m64 -std=c++0x -c -g -I/usr/include/jsoncpp/json -std=c++0x -MMD -MP -MF build/Debug/GNU-Linux-x86/_ext/803384703/CharNode.o.d -o build/Debug/GNU-Linux-x86/_ext/803384703/CharNode.o ../doublets/CharNode.cpp

-I 命令包括查找头文件时要搜索的目录。 os_defines.h和我自己的文件都包含对具有相同名称的不同头文件的引用:features.h 。我认为有一个标准的,我正在使用的 jsoncpp 库中有一个。

问题是上面的-I命令走得太远,不应该在最后有/json。 标准库将此文件称为features.h,内部jsoncpp对其自己的features.h文件执行相同的操作。

如果我查看数千个生成的错误,我会看到我自己对 jsoncpp 库头文件的引用导致"找不到头文件"错误,但我没有走到这一步。