c++ 和 VScode 中的#pragma 区域是什么?

Pri*_*r3d 8 c++ visual-studio-code

我发现我们可以使用#pragma region和隐藏 VScode 中的代码#pragma endregion。我有两个问题:

  1. 如何#pragma region工作?
  2. 如果我试图在任何其他机器上编译代码,它会影响编译吗?

Gen*_*o C 13

#pragma region是具体到Visual Studio

使用#pragma region您可以指定一个代码块,您可以在其中展开和折叠它。

它对编译没有影响。

下面是一个例子:

// pragma_directives_region.cpp
#pragma region Region_1
void Test() {}
void Test2() {}
void Test3() {}
#pragma endregion Region_1

int main() {}
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读更多相关信息。

就像其他人提到的那样,您的编译器可以静默忽略 a pragma,有些甚至会根据您使用的特定编译器发出警告。您需要阅读有关编译器文档的pragma.

gcc -Wall还要检查未知的pragmas。


sta*_*010 11

首先#pragma是 C 预处理器指令。您无疑熟悉#include#define指令。C 预处理器使用指令在代码到达编译器之前执行某些操作。

\n

#pragma指令尤其旨在将特定于实现的信息传递给您正在使用的任何编译器。

\n

GNU是这样说的

\n
\n

#pragma指令是 C 标准指定的方法,用于向编译器提供超出语言本身传达的信息的附加信息。

\n
\n

以下是微软的说法

\n
\n

Pragma 指令指定特定于机器或特定于操作系统的编译器功能。

\n
\n

其次,对于 Microsoft Visual Studio 和 Visual Studio Code,该#pragma region指令定义编译器的 UI 可用于代码折叠(即隐藏和显示代码块以提高可读性)的代码区域。如果编译器无法理解该#pragma region指令,则该指令将被忽略。

\n

下面是一个例子:

\n
    \n
  1. 这是 Mac 上 Visual Studio Code v1.60.0 (2021) 中的一段 C++ 代码。private:如果我可以隐藏和取消隐藏代码块,那就太好了。请注意,当我将鼠标悬停在 UI 上时,会出现一个向下箭头 V 形 (\xe2\x8c\x84),表示注释块的可折叠代码,但不是该块的可折叠private:代码。
  2. \n
\n

在此输入图像描述

\n
    \n
  1. 输入开始#pragma region foo和结束#pragma endregion将标识用于代码折叠的代码块。请注意,添加两个#pragma指令后,可折叠代码 V 形符号将出现在 UI 中。
  2. \n
\n

在此输入图像描述

\n
    \n
  1. 当您单击 V 形时,划定的块将折叠(隐藏)。再次单击 V 形将展开该块。
  2. \n
\n

在此输入图像描述

\n