2013-06-07 10 views
6

Visual Studio 2012で新しく作成されたヘッダーファイルにinclude guardsを自動的に挿入したいと思いますか?Visual Studioでインクルードガードを挿入する速い方法

編集:私は#pragma onceとそのコンパイラによる幅広いサポートを認識しています。しかし、私たちのコーディングスタイルでは、ガードをインクルードする必要があります。

+0

マークを選択して、それを上書きすることができます。 – vkrzv

+0

かなり単純なVSマクロを作成してください - 下の私の答えを見てください。その後、ホットキーを割り当てることができます。 – JeffRSon

答えて

1

#pragma once

しかし、私はあなたのために#ifndefなどを自動的に挿入するものは認識していません。

+0

本当に役に立たない... – codeling

+0

プラグマは一度はデフォルトであり、質問に実際には関係しません。それは既に問題に言及されています。 – saurabheights

+0

@saurabheights:質問の部分が追加されていることに注意してください。この回答... – Joey

1

C++にタグを付けるので、組み込みウィザードでクラスを追加する必要があります。 #pragma onceディレクティブが作成されます。これは他のコンパイラでも利用できます:#pragma onceですので、plattformの互換性を損なうことはありません。あなたは何ができるか

は、しかし、このようなVSマクロを作成するには、次のとおりです。

Option Strict Off 
Option Explicit Off 
Imports System 

Public Module HeaderGuard 
    Sub InsertHeaderGuard() 
     Dim filename As String = DTE.ActiveDocument.Name 
     filename = filename.ToUpper().Replace("."c, "_"c) 
     DTE.ActiveDocument.Selection.Text = "#ifndef " + filename 
     DTE.ActiveDocument.Selection.NewLine() 
     DTE.ActiveDocument.Selection.Text = "#define " + filename 
     DTE.ActiveDocument.Selection.NewLine(2) 
     DTE.ActiveDocument.Selection.Text = "#endif /* " + filename + " */" 
     DTE.ActiveDocument.Selection.NewLine() 
    End Sub 
End Module 
+1

マクロサポートが削除されているVisual Studio 2012以降を使用している場合を除きます。 –

+0

さて、あまりいいことではありません。しかし、それはそれのアドオンを作ることが考えられるかもしれません:http://stackoverflow.com/questions/12027485/alternative-to-macros-in-visual-studio-2012(それを試していない) – JeffRSon

+0

@ RolfKristensen:マクロサポートを本当に削除しましたか?それはどうやって馬鹿だ! #ifdefスタイルのガードで新しいファイルを設定したり、クラスと関数をコメントで作成したりするような、VS2005のマクロのロードを作成しました。アドオンは、マクロと比較して作成するのが非常に手間がかかります。これはまた、レコードの一時マクロも消えたことを意味しますか? VSは本当に良いとされていましたが、リリースごとに悪化しているようです。現在、emacsに移行しています。 – Skizz

0

あなたはautohotkeyのようなツールを使用することができます。ここには疑問の質問に対するanswerがあります。それは次のようなコードスニペットと、選択したコードを囲むことができますのVisual Studio 2012の使用において

5

キーの組み合わせ

Ctrl+K,Ctrl+S 

#if#ifdef#ifndefifclassdoenum、もっと多く

..またはあなた自身を指定してください: http://msdn.microsoft.com/en-us/library/ms165394.aspx

+0

はC#でのみ動作します:/ – codeling

+1

私はC++で使用します – Enigma

+0

ああVS2010の部分を見逃しました - 私はVS2010で試してみました。彼らは間にそれを追加したようだ!迅速な答えをありがとう – codeling

0

ビジュアルアシストXをお持ちの場合は、#pragma onceがあれば削除し、残りのテキストを選択して右クリックしてSurround with (VA) =>#ifdef guard in a headerとすることができます。デフォルトを気に入らない場合は、VASSISTXメニューに戻り、Tools =>Edit VA Snippets...