2012-01-25 29 views
58

相当のC++は#region for C++と同じですので、カスタムコードの折りたたみビットを入れて読みやすくすることができますか?#region for C++

+12

これは言語ではなくIDEの機能ですね。 –

+4

@BjörnPollexは、IDEで使用されていますが、言語構文と競合してはならず、コンパイラもそれを受け入れる必要があります。 –

+1

'#region'は、C#が動作する限り有効な構文であり、コードの領域を区切ります。 Visual Studioでは、IDE機能として折りたたむことができます。 – Thanatos

答えて

65

Region keywordが特定のIDEであるとVisual Studioでのレンダリングに影響します。最も近いものは#pragma Regionで、Visual Studioのみに適用されます。

コード例はMSDN

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

int main() {} 
8

相当品はありません。 #region featureはC#仕様の一部です。

C++には該当するものはありません。あなたは特別にフォーマットされたコメントでそれを模倣することができますが、これはエディタ特有のものです。

は、Visual Studioのためには使用することができます。

#pragma region name 
... 
#pragma endregion name 
+1

だから、あなたが言うところの*そのような同等のものはない*あなたが間違っているのは、#pragma region _がすべての目的と目的で機能的に同等であるからです。 –

+6

@DmitriNesteruk - いいえ、Visual Studio以外のIDEを使用している場合はそうではありません。 '#region'は仕様に定義されており、仕様に準拠したIDEは折りたたみ領域を許すべきです - これは' #pragma region'では言えません。 – Oded

0

からは同等はありません。

ほとんど良いエディタやIDEがif/else/while/forの/ etcまた、あなたが機能を崩壊させ、そうでない場合します。

10

C++には同等の機能はありません。しかし、IDEはセクションを折りたたむことができるはずです。それはこのようなものを使用することも可能である

:... #pragma regionに加えて、Visual Studio用#pragma endregion

#pragma region 

#pragma endregion A comment about the region. 

しかし、おそらく

+0

MSVC固有... – Aconcagua

19

非常に移植性がありませんが、多くのIDEは、いずれかの地域のために、次の構文をサポート{} -delimited、// -commented言語:

//{ Region header text. 
… 
//} 

注目すべき例としてCode::BlocksFlashDevelopNotepad++GeanyKomodo Editなど多くの編集コンポーネントを使用する他のエディタがあります。

+0

VSはこれをサポートしていますか? –

+1

ちょうど試しましたが、それはしません(Visual Studio 2013 Community Edition) –

+0

オープニングブレースの前にヘッダーを追加して、折りたたまれても名前を見ることができるようにすることをお勧めします。 –

0

他の回答にちょうど追加。領域の定義は、IDEからIDEにかけて異なります。

あなたが a pragmaを使用することができます XcodeでのMac開発のために

#pragma mark 
-3

this questionから最初の答えは別の代替に言及しています。しかし、すべての状況に適用されるわけではありません。

メソッド:代わりに{...}を使用して、Visual Studioでコードの折り畳みをネイティブにサポートします。

  1. オプションを有効に:ツール - >オプション - >テキストエディタ - > C/C++ - >フォーマット - > OUTLINE文のブロック - >真を。

  2. 異なるスコープ{...}であなたを入れて、それは異なるスコープ内のコードを崩壊するには:

Scoped code collapsing example

+5

これはすべてのコードで有効ではない可能性があります。このブロック内の変数にスコープの問題が発生する可能性があります。 – asami

0

C++Builderサポートこれを行いますが、あなたは宣言する必要があります領域として:

#pragma region BLAH 

..... 

#pragma end_region 

あなた必要はC++ Builderのend_regionを使用しますが、となり、になります!

5

私は、ここ数年の間にいくつかのプロジェクトのために

#ifndef ANY_NAME_FOR_THIS_REGION 
    ... 
#endif 

を使用してきた、それは(折りたたみ可能なブロックを含む)を私に適しています。さらに、#define ANY_NAME_FOR_THIS_REGIONを使用してブロックを無効にすることもできます。

+0

コード領域をフォーマットしてください – manetsus

+1

単に領域を折りたたむことができるのであれば、単純に '#if 1#endif' – Aconcagua

+0

#if 1は#ifndefよりも単純ですが、その領域の目的(#ifndefの後に続く名前)を記述するためのシンボルの使用を強制しません - 「#ifndef」の前に追加するか、 1 "ですが、IDEによって管理されていません。正直言って、私はまだ "#if 1..else..endif"を使用します。ちょうど2ブロックのコード(1ブロックXOR)を実行する必要があるときだけです。 – Drout

0

//BEGIN//ENDのマーカーでケーキ、KDevelop、およびその他のテキストエディタとIDEを使用しているKatepartを使用してください。

// 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 

このように定義された領域を折りたたむことができます。