在Visual Studio中插入快速的方法包括guard

时间:2013-06-07 07:04:58

标签: c++ visual-studio visual-studio-2012

我想自动将include guards插入到Visual Studio 2012中新创建的头文件中。是否有用于此目的的预定义代码段?

编辑:我知道#pragma曾经和编译器的广泛支持。但是我们的编码风格迫使我使用包含警卫。

5 个答案:

答案 0 :(得分:5)

在visual studio 2012中使用组合键

Ctrl+K,Ctrl+S

它允许您使用代码段包围选定的代码,例如:

#if#ifdef#ifndefifclassdoenum等等

..或指定您自己的: 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...