Was ist das C ++ - Äquivalent von #region für C ++, damit ich benutzerdefinierte Code-Faltbits einfügen und meinen Code ein wenig leichter lesbar machen kann?
Dies ist eher eine Funktion der IDE als der Sprache, nicht wahr?
Björn Pollex
4
@ BjörnPollex, es wird von der IDE verwendet, sollte aber nicht mit der Sprachsyntax in Konflikt stehen und der Compiler muss es ebenfalls akzeptieren.
Darin Dimitrov
1
#regionWas C # betrifft, ist die Syntax gültig und beschreibt einen Codebereich. Mit Visual Studio können Sie sie als IDE-Funktion falten.
Thanatos
10
Sie können nicht #region verwenden , um Ihren Code leichter lesbar zu machen, #region macht Code leichter zu nicht lesen.
jk.
Ich schlage einen Zeilenkommentar vor, gefolgt von einer Blockanweisung.
Grault
Antworten:
90
Das Schlüsselwort Region ist IDE-spezifisch und wirkt sich auf das Rendern in Visual Studio aus. Das nächste Äquivalent ist #pragma Region, das nur für Visual Studio gilt.
Wenn es nur IDE-spezifisch ist, sollte ich mir Gedanken über das Kompilieren eines Codes mit machen #pragma region? Gibt es einen C-Compiler, der dies bestreitet? Gibt es überhaupt Konsequenzen? Danke
Ramon Dias
Einfach mit überprüft Mingw. Mit gcc -Wall, werden Warnungen vor unbekannten Pragmas angezeigt. Wie: warning: ignoring #pragma region test [-Wunknown-pragmas]undwarning: ignoring #pragma endregion [-Wunknown-pragmas]
Ramon Dias
28
Zusätzlich zu #pragma region… #pragma endregionfür Visual Studio unterstützen viele IDEs die folgende Syntax für Regionen in einer beliebigen, {}begrenzten, //kommentierten Sprache:
Nur versucht, es nicht (Visual Studio 2013 Community Edition)
Stefan Fabian
Ich würde vorschlagen, den Header vor der öffnenden Klammer hinzuzufügen, damit Sie den Namen nach dem Reduzieren immer noch sehen können (zumindest in mehr Compilern).
Emad Y
12
In C ++ gibt es kein Äquivalent. IDEs sollten jedoch in der Lage sein, Abschnitte zu reduzieren.
Es ist auch möglich, so etwas zu verwenden:
#pragmaregion#pragmaendregion A comment about the region.
Wenn Sie also sagen, dass es kein solches Äquivalent gibt, liegen Sie falsch, weil #pragma regiones in jeder Hinsicht das funktionale Äquivalent ist.
Dmitri Nesteruk
8
@DmitriNesteruk - nein, ist es nicht - nicht, wenn Sie eine IDE verwenden, die nicht Visual Studio ist. #regionist in der Spezifikation definiert und IDEs, die der Spezifikation entsprechen, sollten kollabierende Regionen zulassen - dies kann nicht gesagt werden #pragma region.
Oded
9
Ich habe benutzt
#ifndef ANY_NAME_FOR_THIS_REGION
...
#endif
für mehrere Projekte in den letzten Jahren und das passt zu mir (einschließlich zusammenklappbarer Blöcke). Zusätzlich kann ich den Block mit #define ANY_NAME_FOR_THIS_REGION direkt darüber deaktivieren.
#if 1 ist noch einfacher als #ifndef, aber es erzwingt nicht die Verwendung eines Symbols zur Beschreibung des Zwecks dieser Region (der Name folgt auf #ifndef). Ich weiß, dass Sie "#if 1" einen Kommentar voranstellen oder anhängen können ", aber es wird nicht von der IDE verwaltet. Um ehrlich zu sein, benutze ich immer noch "#if 1..else..endif", wenn ich nur einen von zwei Codeblöcken ausführen muss (ein Block XOR der andere)
Drout
2
Nur eine Ergänzung zu anderen Antworten. Die Regionsdefinition variiert von IDE zu IDE.
Für die Mac-Entwicklung in Xcode können Sie ein Pragma verwenden:
Kate, KDevelop und alle anderen Texteditoren und IDEs, die Katepart verwenden, unterstützen das Markieren von Regionen mit //BEGINund //ENDMarkierungen.
// 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
#region
Was C # betrifft, ist die Syntax gültig und beschreibt einen Codebereich. Mit Visual Studio können Sie sie als IDE-Funktion falten.Antworten:
Das Schlüsselwort Region ist IDE-spezifisch und wirkt sich auf das Rendern in Visual Studio aus. Das nächste Äquivalent ist #pragma Region, das nur für Visual Studio gilt.
Codebeispiel von MSDN
// pragma_directives_region.cpp #pragma region Region_1 void Test() {} void Test2() {} void Test3() {} #pragma endregion Region_1 int main() {}
quelle
#pragma region
? Gibt es einen C-Compiler, der dies bestreitet? Gibt es überhaupt Konsequenzen? DankeMingw
. Mitgcc -Wall
, werden Warnungen vor unbekannten Pragmas angezeigt. Wie:warning: ignoring #pragma region test [-Wunknown-pragmas]
undwarning: ignoring #pragma endregion [-Wunknown-pragmas]
Zusätzlich zu
#pragma region
…#pragma endregion
für Visual Studio unterstützen viele IDEs die folgende Syntax für Regionen in einer beliebigen,{}
begrenzten,//
kommentierten Sprache://{ Region header text. … //}
Zu den bemerkenswerten Beispielen gehören Code :: Blocks und FlashDevelop sowie alle anderen Editoren, die die Scintilla- Bearbeitungskomponente verwenden, z. B. Notepad ++ , Geany , Komodo Edit und viele mehr.
quelle
In C ++ gibt es kein Äquivalent. IDEs sollten jedoch in der Lage sein, Abschnitte zu reduzieren.
Es ist auch möglich, so etwas zu verwenden:
#pragma region #pragma endregion A comment about the region.
Aber wahrscheinlich nicht sehr tragbar
quelle
Es gibt kein Äquivalent. Die
#region
Funktion ist Teil der C # -Spezifikation.C ++ hat kein solches Äquivalent. Sie könnten es möglicherweise mit speziell formatierten Kommentaren nachahmen, dies wäre jedoch editor-spezifisch.
Für Visual Studio können Sie Folgendes verwenden:
#pragma region name ... #pragma endregion name
quelle
#pragma region
es in jeder Hinsicht das funktionale Äquivalent ist.#region
ist in der Spezifikation definiert und IDEs, die der Spezifikation entsprechen, sollten kollabierende Regionen zulassen - dies kann nicht gesagt werden#pragma region
.Ich habe benutzt
#ifndef ANY_NAME_FOR_THIS_REGION ... #endif
für mehrere Projekte in den letzten Jahren und das passt zu mir (einschließlich zusammenklappbarer Blöcke). Zusätzlich kann ich den Block mit #define ANY_NAME_FOR_THIS_REGION direkt darüber deaktivieren.
quelle
Nur eine Ergänzung zu anderen Antworten. Die Regionsdefinition variiert von IDE zu IDE.
Für die Mac-Entwicklung in Xcode können Sie ein Pragma verwenden:
#pragma mark
quelle
C ++ Builder unterstützt dies zwar, aber Sie müssen die Region wie folgt deklarieren:
#pragma region BLAH ..... #pragma end_region
Sie müssen end_region für C ++ Builder verwenden, aber es wird funktionieren und die Region wird reduziert !
quelle
Kate, KDevelop und alle anderen Texteditoren und IDEs, die Katepart verwenden, unterstützen das Markieren von Regionen mit
//BEGIN
und//END
Markierungen.// 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
Sie können eine so definierte Region reduzieren.
quelle
Es gibt kein Äquivalent.
Mit den meisten guten Editoren oder IDEs können Sie Funktionen reduzieren, wenn nicht auch
if
/else
/while
/for
/ etc.quelle
Die erste Antwort auf diese Frage erwähnt eine andere Alternative. Es ist jedoch nicht in allen Situationen anwendbar.
Methode: Verwenden Sie stattdessen {...}, das das Reduzieren von Code in Visual Studio nativ unterstützt.
Option aktivieren: Extras -> Optionen -> Texteditor -> C / C ++ -> Formatierung -> OutLine-Anweisungsblöcke -> True.
Setzen Sie Ihre in verschiedene Bereiche {...}, dann wird der Code in verschiedenen Bereichen reduziert:
quelle