2013-06-07 26 views
6

Tôi muốn tự động chèn include guards vào các tệp tiêu đề mới được tạo trong Visual Studio 2012. Có đoạn mã được xác định trước nào cho mục đích này không?Cách nhanh để chèn bao gồm bảo vệ trong Visual Studio

CHỈNH SỬA: Tôi biết #pragma một lần và hỗ trợ rộng của nó bằng trình biên dịch. Nhưng phong cách mã hóa của chúng tôi buộc tôi phải sử dụng bao gồm cả bảo vệ.

+0

Đánh dấu, vâng tôi có. – vkrzv

+0

Tạo một macro VS khá đơn giản - xem câu trả lời của tôi bên dưới. Sau đó, bạn có thể gán một phím nóng cho nó. – JeffRSon

Trả lời

1

#pragma once?

Nhưng không, tôi không biết bất cứ điều gì tự động chèn #ifndef, v.v. cho bạn.

+0

không thực sự hữu ích ... – codeling

+0

Pragma một lần là mặc định và không thực sự liên quan đến câu hỏi. Nó đã được đề cập trong câu hỏi. – saurabheights

+0

@saurabheights: Lưu ý rằng phần trong câu hỏi đã được thêm vào _after_ câu trả lời này ... – Joey

1

Vì bạn đang gắn thẻ C++, bạn nên thêm lớp học bằng trình hướng dẫn tích hợp sẵn. Trình hướng dẫn tạo #pragma một lần chỉ thị. Điều này thậm chí có sẵn cho các trình biên dịch khác: #pragma once, do đó bạn không phá vỡ khả năng tương thích chéo plattform.

gì bạn có thể làm, tuy nhiên, là để tạo ra một macro VS như thế này:

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

Trừ khi một người đang sử dụng Visual Studio 2012 (hoặc mới hơn), nơi hỗ trợ macro đã bị xóa. –

+0

Vâng, đó không phải là quá tốt đẹp. Nhưng nó có thể được coi là để làm cho một add-on ra khỏi nó: http://stackoverflow.com/questions/12027485/alternative-to-macros-in-visual-studio-2012 (đã không cố gắng mà mặc dù) – JeffRSon

+0

@ RolfKristensen: Họ có thực sự loại bỏ hỗ trợ macro không? Làm thế nào là câm! Tôi tạo ra vô số các macro trong VS2005 đã làm những việc như thiết lập các tập tin mới với bảo vệ kiểu #ifdef, tạo các lớp và các hàm với các chú thích. Tiện ích bổ sung chỉ là quá nhiều nỗ lực để tạo so với macro. Điều này cũng có nghĩa là macro tạm thời của bản ghi cũng biến mất không? VS từng tỏ ra rất tốt nhưng dường như nó trở nên tồi tệ hơn với mỗi bản phát hành. Hiện đang chuyển sang emacs. – Skizz

0

Bạn có thể sử dụng một công cụ như autohotkey. Dưới đây là một số answer cho một câu hỏi mô phỏng.

5

trong Visual Studio 2012 sử dụng các tổ hợp phím

Ctrl+K,Ctrl+S 

Nó cho phép bạn đặt mã được lựa chọn với các đoạn mã như:

#if, #ifdef, #ifndef, if, class, do, enum, và nhiều hơn nữa

.. hoặc chỉ định của riêng bạn: http://msdn.microsoft.com/en-us/library/ms165394.aspx

+0

chỉ hoạt động với C#:/ – codeling

+1

Tôi sử dụng nó trong C++ – Enigma

+0

ah Tôi đã bỏ lỡ phần VS 2012 - Tôi đã thử trong VS2010 và nó cho tôi biết "... bị ràng buộc với lệnh Hiện tại không có sẵn"). Vì vậy, có vẻ như họ đã thêm nó vào giữa! Cảm ơn vì sớm phản hồi – codeling

0

Nếu bạn có Visual Assist X, bạn có thể xóa #pragma once nếu có, chọn phần còn lại của văn bản, nhấp chuột phải và Surround with (VA) =>#ifdef guard in a header. Nếu bạn không thích mặc định, bạn có thể ghi đè lên menu VASSISTX và chọn Tools =>Edit VA Snippets...

Các vấn đề liên quan