【发布时间】:2019-02-27 09:18:11
【问题描述】:
我正在寻找可视化 #define 效果的方法 - 例如,编译器看不到的代码以不同的颜色显示。
主要是视觉工作室,但很高兴了解其他环境? 理想情况下,编译器也可以看到代码,但不会运行。
【问题讨论】:
-
如果您的 IDE 能够理解文件的编译方式,那么它应该能够做到这一点。可能 CLion 也可以做到这一点。
-
大多数现代 IDE 都具有某种形式的语法高亮功能,可以识别预处理器指令。我不知道任何会做你想做的事。实际上,识别已被预处理器删除的代码的逻辑计算成本太高而无法在 IDE 中运行(减慢输入的回显等),并且可能经常出错而无法使用。许多 IDE 确实可以处理一些简单的情况(例如,将
#ifdef 0和#endif中包裹的文本变灰),但您所寻求的远不止这些。主要提示:不要过度依赖预处理器。 -
@Peter 至少 Visual Studio 2015 及更高版本可以正确执行此操作。我不同意让预处理器在源文件上运行(隐含地,它的包含)是昂贵的。当然,您不想在每次击键后都这样做,但这是非常简单的事情。
-
我不明白关于 Visual Studio 的问题。它already does exactly what you ask for,那么问题是什么?通过this随机问答,它至少从 VS2005 开始就存在,并且从 VS2010 开始工作得更好。
-
@MaxLanghof - 我没有说运行预处理器的成本很高。我说过描述它如何更改代码的逻辑是为了识别和显示/突出显示增量。对于简单的情况,可以。但是对于进行令牌粘贴、字符串化等操作的宏,“已删除”的概念要模糊得多。预处理器还可以做很多其他事情。
标签: c++ c visual-studio ide c-preprocessor