2

我正在为我正在学习的课程使用 Eclipse Juno CDT,但它告诉我它无法解析包含文件中的类型,而且这些不是我编写的标题。

如果我通过命令行通过 g++ 运行它,我编写的程序完全可以编译和运行。问题是我无法在 Eclipse 中调试,因为它甚至无法识别字符串等基本类型。此外,没有代码完成。它发现包含文件很好,我可以打开它们并查看内容,但它仍然无法解析类型。

我已经为有类似问题的人看到了很多建议,但结果都是没有找到包含文件,这不是我的问题。有什么建议么?

4

2 回答 2

0

您可能已经为标题本身包含了正确的目录。在我的系统上是:/usr/include/c++/4.4.6/

但是,您可能没有包含宏_GLIBCXX_BEGIN_NAMESPACE 定义的目录。如果没有这个宏定义,eclipse 不知道 stl 类型在 std 命名空间中。在我的系统上,这个宏定义被隐藏在主 c++ 目录下。尝试将以下路径添加到包含列表中:

/usr/include/c++/4.4.6/x86_64-redhat-linux
/usr/include/c++/4.4.6/x86_64-redhat-linux/bits

如果您不在 redhat 上,请寻找类似的东西。您可以转到 /usr/include 并运行以下 grep 以查找具有必要宏定义的标头:

grep -R -P "define\\s*_GLIBCXX_BEGIN_NAMESPACE\(" .
于 2013-03-05T21:53:39.407 回答
0

也许这些类型在命名空间中,而您没有限定它们(也没有使用 using 声明)。

于 2012-09-18T00:23:12.747 回答