【发布时间】:2016-12-02 18:23:15
【问题描述】:
背景
我花费大量时间浏览和编辑复杂的科学 C 代码。通常它们包含数百个使用预处理器指令打开和关闭的可选功能。这使得几乎不可能一眼看出当前代码块是否在我当前的设置中被激活。代码本身无济于事,因为每个功能都被弄脏了,而且所有事情通常都是使用全局变量完成的。
问题
是否有可以通过折叠/着色非活动代码来处理预处理器指令的 IDE?
我想人们可以使用已用标志的配置来维护一个项目,并且可以不受非活动逻辑分支的干扰。
【问题讨论】:
-
我认为寻求建议是题外话。但是,您在哪个平台上? Visual Studio 会将 ifdef 中未使用的块灰显。
-
我不确定它是否可以从 makefile 中提取它们,但我认为您可以在运行选项中设置一些定义,如果有任何用处,它将使用这些定义来突出显示
-
@AndriiMagalich 就我个人而言,我经常添加
errorerror;行或类似的东西来引发编译错误。如果没有编译错误,则代码未激活。 -
@sashoalm 有一个预处理器指令就是针对这种情况的。
#error将导致预处理器失败,并打印一条可选消息。所以你可以有一些指令来检测无效的特征组合,然后失败。例如:#if defined(ACCEL_OPENCL) && defined(ACCEL_CUDA) #error Cannot build with both OpenCL and CUDA acceleration enabled #endif. -
@gavinb 我知道它并亲自使用它而不是我建议的方式,但我不想混淆 OP,以防他不知道并不得不解释。
标签: c ide c-preprocessor