如何在 Visual Studio 中自动缩进 #pragma 指令

Posted

技术标签:

【中文标题】如何在 Visual Studio 中自动缩进 #pragma 指令【英文标题】:How to automatically indent #pragma directive in Visual Studio 【发布时间】:2015-12-21 16:51:40 【问题描述】:

有人知道如何确保 Visual Studio 2013(C++ 项目)中的 #pragma 指令正确缩进吗?

Visual Studio 总是消除我对这些指令所做的缩进,这让我很恼火。这让我很难折叠我的源代码部分。下面的例子是一个没有缩进的例子。如果它是缩进的,那么它会更容易阅读。

void func()

#pragma region section 1
#pragma endregion

【问题讨论】:

【参考方案1】:

我不同意 #pragma 表达式不应该缩进以显示它们是无范围的。因为在这个特殊的问题中#pragma region MyName 什么都不是,那将改变代码路径或它的任何含义。区域编译指示只是 IDE 的元信息。我很想说,微软误用了#pragma关键字来启用可以折叠区域的IDE功能。

在我的日常代码库中,预处理器指令很少,但有很多 region 指令。因此,我不会冒险通过缩进 pragma 来误解文本。 如果你喜欢缩进 #pragma 表达式,你可以在下面启用它:

Tools > Options > Text Editor > C/C++ > Formatting > Indentation > Position of preprocessor directives > Leave indented

这至少从安装了 Productivity Power Tools 的 Visual Studio 2017 开始有效。

【讨论】:

我经常使用region 来隐藏不重要的代码部分。缩进看起来真的很棒。 +1【参考方案2】:

如果它是缩进的,那么它会产生误导。 #pragmas 是预处理器指令,不遵守范围。您正试图告诉读者您的代码相反。

Visual Studio 是明智的,这一次,我不知道如何改变这种行为。

【讨论】:

【参考方案3】:

我同意Lightness Races in Orbit 的answer。无论缩进如何,预处理器命令都会被执行,并且让它们具有 0 缩进有助于调出代码块被它们包装。

也就是说,如果您想阻止 MSVS 更改缩进,您可以转到

Tools -> Options -> Text Editor -> C/C++ -> Tabs

并将其从 Smart 更改为 Block。这也将阻止自动缩进在其他所有内容上发生,因此您可能不想要它。

【讨论】:

以上是关于如何在 Visual Studio 中自动缩进 #pragma 指令的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Python 的 Visual Studio Code 缩进

在 Visual Studio Code 中保存时避免自动缩进

使用 Visual Studio 2015 禁用注释的自动缩进

Visual Studio 中多行参数列表的自动缩进

Visual Studio 2010 中的 C++ 访问修饰符自动缩进慢慢让我发疯 - 可以更改吗?

如何在 Visual Studio Code 中隐藏缩进指南?