c-如何折叠带有预处理器的控制语句



最近,我一直在研究一些同事的一些遗留代码,使用visual studio代码,我能够将其转换为合理可读的C格式。然而,我想折叠一些控制语句,因为我的同事写的控制语句有时超过100行。

在这些行中,我添加了预处理器控制语句来启用和禁用我的更改。

在visualstudio代码中,我可以很好地折叠代码,但一旦遇到预处理器语句,它就会停止,至少是#ifdef和#ifndef。由于大约每10行就有1行折叠一个控制语句,我需要折叠10次,这有点超出了它背后的想法,对吧?

我试着在设置中寻找折叠和折叠,并在谷歌上搜索,但我找不到任何可以解决我问题的东西。

例如,我有这个片段

if(true)
{
Some functions();
#ifdef DEBUG
Functions with debugging only();
#else
Functions without debugging only();
#endif
Some other functions();
}

我期望,每当我折叠if(true)时,该控制语句中的所有内容都被折叠。这是我已经习惯的,也是Eclipse中vs2017中会发生的事情。VSCODE中不会发生这种情况!相反,只有某些函数();折叠。

如何使VSCODE折叠行为与其他IDE类似?

听起来您的编辑器正在使用缩进级别的折叠。

根据https://code.visualstudio.com/docs/editor/codebasics#_folding:

默认情况下,折叠范围是根据线当一行的缩进小于一个或多个后续行,并在有一行相同或更小的缩进。

由于1.22版本,折叠范围也可以基于编辑器的配置语言的语法标记。以下内容语言已经提供语法感知折叠:

  • Markdown、HTML、CSS、LESS、SCSS和JSON

可能有插件支持其他语言的语法折叠。如果没有,作为一种变通方法,您可以缩进预处理器行。

这是由C/C++扩展ms-vscode.cpptools处理的。

您可以在选项中强制折叠标记:

"editor.showFoldingControls": "always"

但不幸的是,在Eclipse或visualstudio上打开源文件时,似乎并没有折叠和屏蔽非活动代码的选项。

最新更新