【问题标题】:Eclipse-CDT - bool, true, and false as could not be resolvedEclipse-CDT - bool、true 和 false 无法解析
【发布时间】:2021-12-19 16:51:25
【问题描述】:

Eclipse 高亮显示 bool、true 和 false,因为无法解析。 请注意,应用程序构建良好。 如何解决这个问题?

我的设置

Eclipse 版本 2021-06 (4.20.0) 内部版本 20210612-2011

gcc 版本 4.8.5

我尝试过的

我发现帖子说要更改以下内容:

第一

属性 -> C/C++ 构建 -> 设置 -> 工具设置 -> GCC C++ 编译器 -> 方言到 -std=c++14 或其他。

我在属性编辑器中找不到此选项

第二 选择 Window->Properties -> C/C++ General -> Preprocessor Include Paths, Marcos etc. -> Providers Tab

我这样做并添加了 -std=c99

没有效果,或者可能是错误的标准?

【问题讨论】:

  • 你问的是什么代码和语言?在 C++ 中bool 是内置类型,在 C 中您需要包含 stdbool.h 标头(或使用 _Booltype)
  • 您是否加入了stdbool.h?而且您的 GCC 版本很旧,但可能无关。
  • 您是否创建了一个 C 项目但在您的 makefile 中使用了 g++?
  • 所有代码都是 C,包括 stdbool.h 是的,它是旧的,遗留的,我不是 orig dev 是的,make 正在使用 c++ 该项目在 Eclipse 中不是 orig。我用 makefile 做了一个导入 C 项目
  • @SRJ 这类问题正是我们使用 gcc for C 和 g++ for C++ 的原因。

标签: c++ c eclipse-cdt


【解决方案1】:

我认为这里发生的情况是 Eclipse 提供的 linting 版本与用于构建程序的版本不同。将 makefile 的属性与 Eclipse 同步。

您可以在Project -> Properties -> Build Settings 找到构建属性。确保构建命令、标志、C 方言等与 makefile 中的相同。查看 makefile 的 CFLAGS 变量,它会显示属性,如 C 标准、优化(对于调试模式,请确保没有,无论 makefile 说什么都使用 -g,因为它可能是用于发布的。)然后选择Eclipse 中的相同选项。

很可能,makefile 中的 C 标准是 C99,但在 Eclipse 中,它是 C89 或类似的,在这种情况下,只需修改标准即可。

如果 makefile 使用 g++,但它是纯 C,则项目要么使用一点 C++,因此将项目移植到 C++ 项目。如果它是纯 C 但使用 g++,您还必须将其设为 C++ 项目并处理生活,或者如果您觉得有足够的能力更改 makefile,请这样做并使用 gcc。这个问题的可能性最大。

我什至不完全理解 Eclipse 构建的工作原理,这就是我迁移到 Visual Studio Code 的原因,这可能存在一些问题,请随时通过评论要求澄清。并确保每个使用布尔值的文件都有#include <stdbool.h>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-19
    • 2015-11-07
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2011-12-19
    • 2012-06-03
    相关资源
    最近更新 更多