2010-06-25 28 views

回答

27

你可以告诉日食USE_FEATURE_A已定义。打开你的项目属性,进入“C/C++常规 - >路径和符号”页面,在“符号”标签下单击“添加”按钮,并将USE_FEATURE_A放入名称feild中,然后单击确定。

注意:这将导致它不会索引任何#else双方到您的预处理器的东西......所以除非他们都像那个问题你不能AFAIK,但如果他们是他们,你是好的。 (Eclipse包含一个C预处理器,它用于分析代码,所有上面的东西基本上与向命令行添加-DUSE_FEATURE_A相同,因此Eclipse的预处理器将与编译器中的预处理器行为不同)

+3

非常感谢你,你真的给了我几个小时的生活! – 2010-08-05 19:11:08

+1

是的,这是一个解决方案,但远没有“用户友好”。 这是我的一个主要问题。绕过所有代码(尤其是其他代码)并搜索所有符号并将它们添加到项目属性是不现实的!我不明白为什么Eclipse不能有一个复选框来允许我们禁用索引/参考目的的预处理器... 与Visual Slick相比(我和我的同事们以前使用过),这是Eclipse的一个主要缺点。 (C/C++版本)。 – Rex 2012-12-07 11:45:30

+1

唯一的问题是可能有几个定义。我的意思是几个... – Vetras 2013-02-28 11:30:07

1

它是什么值得,通过eclipse解析有条件编译的代码要比第一眼看起来要难得多。我在2007年发现了IBM的一篇论文,他们说他们将优先考虑“下一个版本”。

Handling Conditional Compilation in CDT's Core

+0

感谢您的信息。这正是我所寻找的。基本上,从Spudd86响应appart,没有办法获得eclipse来处理此代码。 – Vetras 2013-02-28 11:31:25

1

我有同样的问题,但通过预处理有条件淘汰的代码是完全合法的C代码,我想它格式化...这是我的解决方案:

1)全球查找/替换的的#if到#JUNKif

2)按Ctrl-Shift-F组合重新格式化源

3)另一种全球查找/替换#JUNKif的到的#if

2

这是一种更简单,在我看来,更优雅的解决方案选择作为解决方案之一:

如果有人有同样的问题(像我),这可以(?现在)很容易被去解决到窗口 - >首选项 - > C/C++ /索引器启用“索引所有报头变量”。 然后点击Project-> C/C++ Indexer-> rebuild and clean and build您的项目。这应该解决来自预处理器命令的所有错误。

0

在Eclipse(Kepler)c/C++编辑器中标记下标记的代码的一种方法。

您可以在Eclipse编辑器中启用编译标志,以便它们下面的代码可以编入索引。

属性>预处理包括路径> CDT用户设置的条目

点击地址并添加预处理器宏,你可以指定它的值。

0

我猜想最好的方法是使用索引器选项:项目属性> C/C++常规>索引器。 您可以选择启用项目特定设置 我更喜欢选择“使用活动构建配置”,以便项目中实际构建的所有文件都被编入索引。 无论如何,你也可以选择索引项目中的所有文件,即使它们不包含在构建中...