Перейти к содержимому

Pragma endregion c что это

  • автор:

region и endregion pragma

#pragma region позволяет указать блок кода, который можно развернуть или свернуть при использовании функции структурирования редактора Visual Studio.

Синтаксис

#pragma region имя
#pragma endregion комментарий

Параметры

комментарий
(Необязательно) Комментарий для отображения в редакторе кода.

имя
(Необязательно) Имя региона. Это имя отображается в редакторе кода.

Замечания

#pragma endregion помечает конец #pragma region блока.

#pragma region Блок должен быть завершен директивой #pragma endregion .

Пример

// pragma_directives_region.cpp #pragma region Region_1 void Test() <> void Test2() <> void Test3() <> #pragma endregion Region_1 int main() <> 

What is #pragma region in c++ and VScode?

#pragma region has no effect on compilation whatsoever. It is just a convenience tool for an IDE to expand/collapse snippets of code.

Aug 20, 2020 at 20:26

Any #pragma directive that is unknown to a compiler will be ignored. Some compilers may issue a warning.

Aug 20, 2020 at 20:31

2 Answers 2

The #pragma region is specific to Visual Studio only.

Using #pragma region you can specify a block of code where you can expand it and collapse it.

It has no affect on compilation.

Here is an example:

// pragma_directives_region.cpp #pragma region Region_1 void Test() <> void Test2() <> void Test3() <> #pragma endregion Region_1 int main() <> 

You can read more about it here.

Like others have mentioned your compiler is allowed to silently ignore a pragma , Some will even give a warning depending on the specific compiler you are using. You need to read about your compiler’s docs on pragma .

gcc -Wall also check for unknown pragma s.

answered Aug 20, 2020 at 20:28
1,461 3 3 gold badges 12 12 silver badges 26 26 bronze badges
When you say ignore a pragma , are you referring to all pragma s?
Aug 20, 2020 at 20:49
I am referring to all the pragma s that may be unknown to the compiler, @DynamicSquid.
Aug 20, 2020 at 20:52

It should be noted that ignoring unknown pragmas (using -Wno-unknown-pragmas for example) should be approached cautiously, particularly if you have pragmas in your application code.

Sep 8, 2021 at 18:49

First, #pragma is a C preprocessor directive. You’re undoubtedly familiar with the #include and #define directives. Directives are used by the C preprocessor to perform certain actions before the code reaches the compiler.

The #pragma directive in particular is meant to pass implementation-specific information to whatever compiler you’re using.

The #pragma directive is the method specified by the C standard for providing additional information to the compiler, beyond what is conveyed in the language itself.

Pragma directives specify machine-specific or operating system-specific compiler features.

Second, for Microsoft Visual Studio and Visual Studio Code, the #pragma region directive defines a region of code that the compiler’s UI can use for code-folding (that is, hiding and showing blocks of code for readability). If a compiler cannot understand the #pragma region directive, then the directive is ignored.

Here’s an example below:

  1. Here’s a chunk of C++ code in Visual Studio Code v1.60.0 (2021) on Mac. It would be great if I could hide and unhide the private: chunk of code. Note that when I mouse-over the UI, there is a down arrow chevron (⌄) to indicate foldable code for the comment block but not for the private: block.

enter image description here

  1. Putting in a starting #pragma region foo and ending #pragma endregion will identify a block of code for code-folding. Notice that after the two #pragma directives are added, the code-foldable chevron symbol appears in the UI.

enter image description here

  1. When you click on the chevron, the demarcated block will fold (hide). Clicking on the chevron again will unfold the block.

Есть ли в С++ аналог #region из C#?

В C++ принято отделять объявления от определений, поэтому острой необходимости в таких штуках нет.

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

Ваш ответ на вопрос

Войдите, чтобы написать ответ

c#

  • C#
  • +1 ещё

Как проверять столкновение префаба и UI панели в Unity?

  • 1 подписчик
  • 7 часов назад
  • 24 просмотра

#pragma

Директива #pragma определяется стандартом ANSI С для реализации директив, предоставляю­щих компилятору различные инструкции. Стандартный вид #pragma следующий:

где имя — это имя директивы #pragma. Borland определяет 14 директив #pragma:

argused
anon_struct
codeseg
comment
exit
hdrfile
hdrstop
inline
intrinsic
message
option
saveregs
startup
warn

Директива argused должна стоять перед функцией. Она используется для устранения предупреж­дений, если аргумент функции, перед которой стоит #pragma, не используется в теле функции.

Чтобы разрешить использовать анонимные структуры, укажите директиву anon_struct. С помо­щью директивы codeseg можно указать сегмент, класс или группу, используемую функцией.

Используя директиву comment, в выходной файл, например, в файл с расширением obj или ехе можно поместить комментарии.

Директива exit определяет одну или несколько функций, вызываемых при завершении програм­мы. Директива startup определяет одну или несколько функций, вызываемых при запуске про­граммы. Они имеют следующий вид:

#pragma exit имя_функции приоритет

#pragma startup имя_функции приоритет

Приоритет — это значение от 64 до 255 (значения от 0 до 63 зарезервированы). Приоритет определяет порядок вызова функций. Если приоритет не указан, то по умолчанию предполагает­ся значение 100. Все функции, выполняющиеся в начале или конце программы, должны объяв­ляться следующим образом:
void f(void);

Следующий пример определяет функцию start(), выполняющуюся в начале программы.

#include
void start(void);
#pragma startup start 65
int main(void)
printf(«In main\n»);
return 0;
>
void start (void)
printf(«In start\n»);
>

В результате работы программы на экране появится:

In start
In main

Как показывает данный пример, необходимо предоставить прототип функции до использования директивы #pragma.

С помощью директивы hdrfile можно определить имя файла, используемого для хранения пред- компилированных заголовочных файлов. Он имеет вид

#pragma hdrfile «имя_файла. csm»

где имя_файла — это имя файла (с расширением csm).

Директива hdrstop сообщает Borland С++ о необходимости остановить предкомпиляцию заго­ловочных файлов.

Также имеется директива inline, имеющая следующий вид:

Она сообщает компилятору, что программа содержит внутренний ассемблерный код. При создании самого быстрого кода компилятор должен знать, что в программе содержится ассемблерный код.

Используя директиву intrinsic, можно указать компилятору на необходимость подстановки кода функции вместо ее вызова. Директива имеет вид:

#pragma intrinsic имя_функции

где имя_функции — это имя функции, которую необходимо сделать внутренней.

Если выбрать опцию Inline Intrinsic Function в ИСР (интегрированной среде разработчика) или воспользоваться опцией -Oi при компиляции с помощью строчного компилятора, то Borland ав­томатически сделает внутренними следующие функции:

alloca memcpy stpcpy strcpy strncpy
fabs memset strcat strlen strnset
memchr rotl strchr strncat strrchr
memcmp rotr strcmp strncmp

Воспользовавшись директивой intrinsic, можно отменить функции, которые станут внутренними: #pragma intrinsic имя_функции

Директива message позволяет определить сообщение, выводимое в качестве предупреждения при компиляции программы. Например:

#include
#pragma message This will be displayed as a warning.
int main(void)
int i=10;
printf («This is i: %d\n», i);
#pragma message This is also displayed as a warning.
return 0;
>

При компиляции появятся два сообщения #pragma, выводящиеся в качестве предупреждений. При использовании ИСР они появятся в стандартном окне сообщений.

Директива option позволяет определить опции командной строки вместо того, чтобы данные опции явно указывать в командной строке. Она имеет следующий вид:

#pragma option список_опций

Например, следующая директива приводит к тому, что содержащая ее программа будет компи­лироваться в модели large:

#pragma option -ml

Следующие опции не могут использоваться с директивой option:

-В -с -D -е -Е -F -h
-l -М -о -Р -Q -S -Т
-U -V -X -Y

Для использования некоторых опций директива option должна стоять перед любыми объявления­ми, включая прототипы функций. Поэтому имеет смысл помещать данную директиву самой первой.

Директива saveregs запрещает функции, объявленной как huge, изменять какие-либо регистры. Данная директива должна стоять перед функцией, и она влияет только на функцию, перед кото­рой стоит.

Директива warn позволяет запретить или разрешить различные предупреждения. Она имеет вид:

#pragma warn установки

где установки — это опции для определения предупреждений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *