c++ - 不匹配的 C++ header 版本

标签 c++ linux ubuntu c++11

为了满足一些先决条件,我刚刚在我的 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 构建/调试/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 库头文件的引用导致“找不到头文件”错误,但我没有走到这一步。

关于c++ - 不匹配的 C++ header 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21138340/

相关文章:

php - 我如何在我的 php 应用程序中显示 web 根目录之外的图像?

linux - Linux内核中的内存去重

c - C 中的 TensorFlow : Why do I get a compilation error in hello_tf. c?

ubuntu - 智能 : Ubuntu/linux how to open file with IntelliJ from shell

C++ 在函数中抛出异常并在调用者中捕获它?

c++ - 复制两个字符数组的模板函数

c++ - 快速 Arc Cos 算法?

c++ - 重载 << 运算符返回错误值 (C++)

linux - 有没有办法将环境变量设置为 x 小时

ubuntu - Node Sass 还不支持你当前的环境 : Linux 64-bit