vs2005中宏的制作与应用

0 背景

我们在写代码时,为了防止头文件重复引用,往往会用以下方法(以文件CMpeg4DecHandler.h为例):

文件开始加入

#ifndef CXX_CMPEG4DECHANDLER_H
#define CXX_CMPEG4DECHANDLER_H

文件结束加入

#endif //CXX_CMPEG4DECHANDLER_H

 

为了提高编译速度,我们往往会在引用此头文件的地方加入:

#ifndef CXX_CMPEG4DECFILTER_H
#include "CMpeg4DecFilter.h"
#endif

 

但是很多人在写代码的时候,引用头文件的地方会忘记加入#ifndef #endif这些代码。文件少的话,其实没什么影响,如果文件很多很多,对编译速度的影响还是很大的。

 

为了减少麻烦,特制作一个宏,这样的话对于缺少#ifndef #endif的时候,就能直接用宏生成了。(使用这个宏有个前提,就是每个头文件的CXX_CMPEG4DECHANDLER_H都是同样的格式:CXX_ + 文件名大写 + _H。其他的格式也可以,需要自己改宏的VB代码)

 

1 宏制作

在vs2005里,Tools->Macros->New Macro Project,建立一个新的宏工程。在Macro Explorer里面有我们新建的工程。双击我们新建的工程下的Module1,就可以编辑了。

 

在Public Module Module1和 End Module之间加入如下代码:

 

    'Add #ifndef CXX_XXXX_H #include XXXX.h #endif to #include XXXX.h
    Sub AddFunComment()
        Dim DocSel As EnvDTE.TextSelection
        Dim objTextSelection As TextSelection
        Dim text As String
        Dim subtext As String

        objTextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection)
        text = objTextSelection.Text

        Dim i = text.IndexOf("""")
        Dim j = text.LastIndexOf(".")
        subtext = text.Substring(i + 1, j - i - 1)
        subtext = subtext.ToUpper()

        DocSel = DTE.ActiveDocument.Selection
        DocSel.NewLine()
        DocSel.Text = "#ifndef CXX_"
        DocSel.Text = subtext
        DocSel.Text = "_H"

        DocSel.NewLine()
        DocSel.Text = text

       
        DocSel.NewLine()
        DocSel.Text = "#endif"

        DocSel.NewLine()

    End Sub

 

然后保存即可。

 

2 使用

选中代码

#include "CMpeg4DecFilter.h"

然后在Macro Explorer下找到我们新建工程下的module1下的AddFunComment,看看效果吧。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值