C. Wang
C. Wang

Reputation: 2546

About collapsing code block in Visual Studio using #pragma region

In VisualStudio, when you write a function it can collapse to outlines, everyone knows it. Also you can use #pragma region and #pragma endregion to manually specify a code region so that it can collapse. However I found a problem that, if any collapsed code blocks are within the #pragma region, they cannot collapse anymore. Is there any way to solve it?

<code>funcA()</code>,<code>funcB()</code>, <code>funcC()</code> can be collapsed

After I add <code>#pragma region</code>, they cannot collapse independently.

Upvotes: 2

Views: 11003

Answers (2)

herohuyongtao
herohuyongtao

Reputation: 50667

There are several other also better and flexible ways than #pragma region you can do to collapse code in VS:

Method 1: Use {...} instead which natively supports code collapsing in VS.

  1. Enable option: Tools->Text Editor->C/C++->Formatting->OutLine Statement Blocks->True.

  2. Put your in different scopes {...}, then it will collapse the code in different scopes:

    enter image description here


Method 2: use keyboard shortcuts to collapse code you want:

  • CTRL + M + O will collapse all.

  • CTRL + M + L will expand all.

  • CTRL + M + P will expand all and disable outlining.

  • CTRL + M + M will collapse/expand the current section.


It is worthy noting that method #1 works better for plain code snippets. For functions, because similar to that we cannot have functions inside functions in C++, we cannot put functions in scope defined by {...}. Fortunately, we can still use method #1 for functions by creating namespaces for each scope. Or simply, use method #2.

Upvotes: 9

Digital_Reality
Digital_Reality

Reputation: 4738

Yeah that problem exist

One workaround which sometimes works is to use outlining -> collapse to definitions, then re-expand each block.

Upvotes: 0

Related Questions