Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Eclipse在#ifdef…中索引代码#恩迪夫_C_Eclipse_Indexing - Fatal编程技术网

如何让Eclipse在#ifdef…中索引代码#恩迪夫

如何让Eclipse在#ifdef…中索引代码#恩迪夫,c,eclipse,indexing,C,Eclipse,Indexing,我正在使用eclipse处理一些c代码,它不会在条件编译块中为代码编制索引,如下所示: #ifdef USE_FEATURE_A int feature_a(...) { some = code(here); } #endif 如何让eclipse为功能建立索引?您可以告诉eclipse已定义了USE\u功能。打开项目属性并转到“C/C++常规->路径和符号”页面,在“符号”选项卡下单击“添加”按钮,将使用功能\u A放在名称feild中,然后单击确定 注意:这将导致它不会索引预处理器内

我正在使用eclipse处理一些c代码,它不会在条件编译块中为代码编制索引,如下所示:

#ifdef USE_FEATURE_A
int feature_a(...) {
   some = code(here);
}
#endif

如何让eclipse为功能建立索引?

您可以告诉eclipse已定义了
USE\u功能。打开项目属性并转到“C/C++常规->路径和符号”页面,在“符号”选项卡下单击“添加”按钮,将
使用功能\u A
放在名称feild中,然后单击确定


注意:这将导致它不会索引预处理器内容的任何方面。。。所以,除非他们都像你所说的那样,否则你不能相信,但如果他们都是,你就很好。(Eclipse包含一个C预处理器,它用来分析您的代码。上面的所有工作与在命令行中添加-DUSE_FEATURE_a基本相同,因此Eclipse的预处理器的行为将不同于编译器中的预处理器)

,让eclipse解析有条件编译的代码比乍一看要困难得多。我在IBM 2007年发表的一篇论文中发现,他们表示将优先考虑“下一版本”


我也遇到了同样的问题,但通过预处理有条件地消除的代码是完全有效的c代码,我希望将其格式化。。。这就是我的解决方案:

1) 全球查找/替换“如果”至“军基夫”

2) Ctrl-Shift-F以重新格式化源


3) 另一个全球性的发现/取代#JUNKif to#if

对于被选为解决方案的解决方案来说,这是一个更简单、更优雅的解决方案:

如果有人有同样的问题(和我一样),现在可以通过转到窗口->首选项->C/C++/Indexer启用“索引所有标题变量”轻松解决这个问题。
然后单击项目->C/C++索引器->重建清理构建您的项目。这将解决所有源于预处理器命令的错误。

在Eclipse(开普勒)c/c++编辑器中将代码索引到标志下的一种方法

您可以在Eclipse编辑器中启用编译标志,以便对其下的代码进行索引

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


单击添加并添加预处理器宏,您可以指定其值。

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

索引,以便“跳转到定义”和调用层次结构等功能可以正常工作。非常感谢您的帮助,您简直让我活了好几个小时!是的,这是一个解决方案,但远不是“用户友好”。这对我来说是个大问题。遍历所有代码(尤其是来自其他代码的代码)并搜索所有符号然后将它们添加到项目属性中是不实际的!我不明白为什么Eclipse不能有一个复选框来允许我们禁用用于索引/引用目的的预处理器。。。与VisualSlick(我和我的同事以前使用的)相比,这是Eclipse的一个主要缺点。(C/C++版本)。唯一的问题是可能有多个定义。我指的是几个…同样在eclipse网站上注意:如果您使用多个构建配置,并且eclipse的行为与您预期的不一样,请转到C/C++General->Indexer,并确保“Indexer的构建配置”设置为“使用活动构建配置”“如果需要,也可以强制将其设置为特定的固定配置选项。谢谢您提供的信息。这就是我要找的。基本上,从Spudd86响应来看,没有办法让eclipse处理这段代码,这对条件编译没有帮助。#else中的代码块仍然是灰色的。不幸的是,这并不能解决条件编译的索引问题。