在构建设置中,我在调试构建配置中定义DEBUG
,这样我可以根据构建的类型使我的代码分开。
然而,在Eclipse中,它会使预处理器排除的代码部分变暗,而且当我更改设置时(无论我当前是否正在构建调试或发布),这部分都无法跟上。所以,我有一堆永远变暗的代码,Eclipse索引器和其他有用的功能在这些区域内不起作用。
如何解决?有人遇到过这种情况么?
更新:仍有此问题。我最终放弃了我的单元测试构建配置,并简单地将该功能放入命令行开关中。这样我就可以在编写单元测试时编写索引。
答案 0 :(得分:19)
您必须在项目C / C ++索引器首选项中将“构建索引器的配置”选项设置为“使用活动的构建配置”。打开项目的属性面板,转到c / C ++ General和Indexer并启用项目特定设置,并将底部的radiobutton更改为“Use Active build configuration”。
当然,您也可以在Eclipse的全局属性面板中设置它,以更改所有项目的此设置。
答案 1 :(得分:2)
转到项目的属性,然后转到C / C ++ General-> Paths and Symbols-> Symbols。在那里添加你的定义,它将起作用。
答案 2 :(得分:1)
1)如果你想根据构建配置更改系统的定义,你需要像dgrant所说:"项目属性并选择C / C ++ General->路径和符号然后选择符号选项卡",但您需要确保在窗口顶部选择了正确的配置。还要确保当您将符号添加到列表中时,您必须检查"添加到所有配置"复选框。
2)如果您希望CDT在编辑器中解析正确的符号集,您还需要确保您也有正确的构建配置。为此,右键单击您的项目并选择Build Configurations-> Set Active->并选择要激活的构建配置。 CDT现在将使用您在上一步中定义的全局符号来解析所有文件,就好像这个构建配置是活动的一样。
我在Eclipse的每个版本中都遇到过一个问题,它并不总是决定立即重建索引文件。要做到这一点,你可以开始构建(构建实际上不必完成),或者你可以右键单击你的项目并转到Index-> Rebuild。两者都会导致立即重新编制索引。但是你不应该这样做,我可以确认只是按照上面步骤2中的描述更改构建配置将导致#ifdef检查仅在我的一个构建配置中定义的符号会立即导致它变成灰色 - 应该出来或者不要灰掉。
答案 3 :(得分:0)
检查提供程序:-> C / C ++常规->预处理程序包括路径,宏等。->提供程序-> CDT托管构建设置条目。应该启用它。
检查定义的符号是否在此提供程序的条目中。
索引器是可选的。
答案 4 :(得分:-3)
我满意的解决方案是使用工作的libclang插件从Eclipse转向编辑:Sublime Text,Vim。
对于C / C ++的智能IDE,XCode或MSVC可能不会出错。