如何让 Eclipse CDT 相信宏是为源代码编辑和代码完成而定义的?

Osw*_*ald 4 eclipse indexing eclipse-cdt eclipse-juno

我的源代码中有:

// foo.cpp
struct foo
{
  foo() {}

  #ifdef I_WANT_THIS_FEATURE
  void bar() {}
  #endif
};
Run Code Online (Sandbox Code Playgroud)

在我的 Makefile 中我有

foo.o: foo.cpp
        g++ -c -DI_WANT_THIS_FEATURE foo.cpp -o foo.o
Run Code Online (Sandbox Code Playgroud)

这可以从命令行以及我在 Eclipse 中创建的外部构建器(它基本上定义了一些环境变量和调用make)进行良好的编译,并且我可以调用foo::bar().

但是,在 Eclipse CDT 源代码编辑器中,我定义的部分foo::bar()具有灰色背景(表明foo::bar()不会包含在构建中),并且类型对象上的代码完成foo不建议bar()作为可以调用的方法。

如何使用I_WANT_THIS_FEATURE自定义 makefile 在 Eclipse CDT makefile 项目中定义宏,以便源代码编辑器和代码完成可以识别该宏?

Bim*_*mme 5

除了奥斯瓦尔德的回答之外:

如果您有多个构建配置,则 Eclipse Indexer 的默认行为似乎是它始终使用第一个构建配置。

就我而言,定义仅在第三个构建配置中定义,因此 Oswald 提供的解决方案没有帮助。

要全局更改此设置,请选择Window -> Preferences -> C/C++ -> Indexer。选择使用活动构建配置

您还可以选择覆盖Project -> Properties -> C/C++ General -> Indexer下的项目设置中的全局设置,然后选择Enable project Specific settings,然后选择Use active build configuration

之后,Oswald 提供的解决方案应该有效:

项目 -> 属性 -> C/C++ 常规 -> 路径和符号

选择“符号”选项卡并添加...一个名称为 I_WANT_THIS_FEATURE 且值为 1 的新符号。


归档时间:

查看次数:

5993 次

最近记录:

2 年,4 月 前