gpt4 book ai didi

c++ - 添加 #include 时出现奇怪的错误

转载 作者:行者123 更新时间:2023-11-28 08:22:37 25 4
gpt4 key购买 nike

我有以下非常简单的应用程序,可以正常编译和运行:

编辑:将示例更改为简单以结束对实际问题的混淆

int main() {
return 0;
}

一旦我添加 #include <string>(甚至没有引用 std::string),它就无法编译,并且出现以下错误:

/usr/include/c++/4.1.2/bits/allocator.h:82 error: expected template-name before '<' token

以及大约 456 个其他类似的错误。

有什么想法吗?谢谢!

更新:

/usr/include/c++/4.1.2/bits/allocator.h 的第 82 行在错误的位置引用了模板 __glibcxx_base_allocator。该模板在 bits/c++allocator.h 中定义。当我在系统中搜索该文件时,我得到了 3 个匹配项,但没有一个像预期的那样在 /usr/include/c++/4.1.2/bits/ 中。

我有 3.1.6、4.1.1 和 4.3.2 版,但没有 4.1.2 版,因为我正在使用的其余内容。我不确定正在使用哪个(如果有的话,但是,对于未知文件我没有收到任何错误),但似乎问题可能源于此。

最佳答案

问题似乎是安装的开发包不正确或不完整(不要与损坏混淆)。强制 g++ 使用不同的包含版本可以纠正:

g++ -nostdic++ hello.cc -o hello -I/usr/include/c++/3.4.6

所有替代目录(4.1.1、4.1.2 和 4.3.2)都不完整,导致包含不适当的文件,从而导致异常错误。例如:

/usr/include/c++/4.1.2/bits/allocator.h 需要 __glibcxx_base_allocator 位于 bits/c++allocator.h/usr/include/c++/4.1.1/usr/include/c++/4.3.2 中包含并且似乎不兼容。强制编译器使用唯一完整的包含集可以纠正这个问题。

关于c++ - 添加 #include <string> 时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com