web-dev-qa-db-fra.com

Équivalent de #region pour C ++

Quel est l'équivalent C++ de #region pour C++ afin que je puisse insérer des bits réductibles de code personnalisé et rendre mon code un peu plus facile à lire?

69
SirYakalot

Le mot clé Region est IDE spécifique et affecte le rendu dans Visual Studio. L'équivalent le plus proche est # pragma Region qui s'applique à Visual Studio uniquement .

Exemple de code de MSDN

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

int main() {}
77
Dr. ABT

En plus de #pragma region#pragma endregion pour Visual Studio, de nombreux IDE prennent en charge la syntaxe suivante pour les régions dans n'importe quel {}- délimité, //- langue commentée:

//{ Region header text.
…
//}

Les exemples notables incluent Code :: Blocks et FlashDevelop , et tout autre éditeur qui utilise le composant d'édition Scintilla , tel que Notepad ++ , Geany , Komodo Edit , et bien d'autres.

25
Jon Purdy

Il n'y a pas d'équivalent en C++. Cependant, les IDE devraient pouvoir réduire les sections.

Il est également possible d'utiliser quelque chose comme ceci:

#pragma region

#pragma endregion A comment about the region.

Mais probablement pas très portable

10
Firedragon

Il n'y a pas d'équivalent. Le #region feature fait partie de la spécification C #.

C++ n'a pas un tel équivalent. Vous pouvez éventuellement l'imiter avec des commentaires spécialement formatés, mais ce serait spécifique à l'éditeur.

Pour Visual Studio, vous pouvez utiliser:

#pragma region name
...
#pragma endregion name
9
Oded

J'utilise

#ifndef ANY_NAME_FOR_THIS_REGION
    ...
#endif

pour plusieurs projets au cours des deux dernières années et cela me convient (y compris les blocs pliables). en plus, je peux désactiver le bloc en utilisant #define ANY_NAME_FOR_THIS_REGION juste au-dessus.

6
Drout

Kate, KDevelop et tous les autres éditeurs de texte et IDE qui utilisent Katepart prennent en charge le marquage des régions avec //BEGIN et //END Marqueurs.

// BEGIN GPT entity types
#define GPT_ENT_TYPE_UNUSED \
    {0x00000000,0x0000,0x0000,0x00,0x00,{0x00,0x00,0x00,0x00,0x00,0x00}}
#define GPT_ENT_TYPE_EFI \
    {0xc12a7328,0xf81f,0x11d2,0xba,0x4b,{0x00,0xa0,0xc9,0x3e,0xc9,0x3b}}
#define GPT_ENT_TYPE_MBR \
    {0x024dee41,0x33e7,0x11d3,0x9d,0x69,{0x00,0x08,0xc7,0x81,0xf3,0x9f}}
// END

Vous pourrez réduire une région définie de cette manière.

0
Sauron

Il n'y a pas d'équivalent.

La plupart des bons éditeurs ou IDE vous permettront de réduire les fonctions, sinon aussi if/else/while/for/etc.

0
Thanatos

C++ Builder prend en charge cela, mais vous devez déclarer la région comme:

#pragma region BLAH

.....

#pragma end_region

Vous devez utiliser end_region pour C++ Builder, mais cela fonctionnera , et il effondrera la région!

0
user4351871

Juste un ajout à d'autres réponses. La définition de région varie de IDE à IDE.

Pour le développement Mac en Xcode vous pouvez utiliser un pragma:

#pragma mark
0
Viktor Latypov