我想自动将include guards插入到Visual Studio 2012中新创建的头文件中。是否有用于此目的的预定义代码段?
编辑:我知道#pragma曾经和编译器的广泛支持。但是我们的编码风格迫使我使用包含警卫。答案 0 :(得分:5)
在visual studio 2012中使用组合键
Ctrl+K,Ctrl+S
它允许您使用代码段包围选定的代码,例如:
#if
,#ifdef
,#ifndef
,if
,class
,do
,enum
等等
..或指定您自己的: http://msdn.microsoft.com/en-us/library/ms165394.aspx
答案 1 :(得分:1)
#pragma once
?
但不,我不知道有什么会自动为您插入#ifndef
等。
答案 2 :(得分:1)
由于您正在标记C ++,因此应该通过内置向导添加类。该向导会创建#pragma once指令。这甚至可用于其他编译器:#pragma once,因此您不会破坏平台交叉兼容性。
然而,你可以做的是创建一个像这样的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
答案 3 :(得分:0)
您可以使用autohotkey之类的工具。以下是类似问题的answer。
答案 4 :(得分:0)
如果您有Visual Assist X,则可以删除#pragma once
(如果有),选择文本的其余部分,右键单击并Surround with (VA)
=> #ifdef guard in a header
。如果您不喜欢默认设置,可以将其覆盖到VASSISTX
菜单并选择Tools
=> Edit VA Snippets...