8

我想自动将包含保护插入到 Visual Studio 2012 中新创建的头文件中。是否有任何预定义的片段用于此目的?

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

4

5 回答 5

6

在 Visual Studio 2012 中使用组合键

Ctrl+K,Ctrl+S

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

#if, #ifdef, #ifndef, if, class, do, enum, 等等

.. 或指定您自己的:http: //msdn.microsoft.com/en-us/library/ms165394.aspx

于 2013-06-07T08:40:34.347 回答
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
于 2013-06-07T07:16:03.890 回答
1

#pragma once?

但是不,我不知道有什么会自动#ifndef为您插入 等。

于 2013-06-07T07:08:12.503 回答
0

您可以使用autohotkey 之类的工具。这是一个类似问题的答案

于 2013-06-07T07:18:37.457 回答
0

如果你有 Visual Assist X,你可以删除你的#pragma once,如果存在的话,选择文本的其余部分,右键单击和Surround with (VA)=> #ifdef guard in a header。如果您不喜欢默认设置,您可以将其覆盖到VASSISTX菜单并选择Tools=>Edit VA Snippets...

于 2015-11-14T10:12:01.983 回答