VS2010利用宏为函数添加注释

为了阅读代码及修复BUG的方便,公司里面函数的注释都是固定的格式,每次添加注释都是从原来写好的地方复制来一段,然后一项一项的去修改。作为程序员大军中的一员,要发挥懒的特性,一懒到底,网上查了好久,再参考VC6.0里自带的宏,终于勉勉强强写了一个宏来自动添加函数注释,一般的函数都可以用了,有小错误的地方也只能手动改了。先上个公司规定的函数的格式:

// ---------------------------------------------------------------
// 名称: CopyData
// 功能: 图元之间拷贝数据
// 变量: [in,out] des -- 目标图元
//       [in] src -- 原始图元
// 返回: 无
// 编写: 天蓬,20121009
// ---------------------------------------------------------------

下面是参考了N多文章查了N多资料弄来的宏代码(没办法,谁让咱是菜鸟呢):

    Sub FunctionSign()
        'DESCRIPTION 函数签名
        Dim obj
        obj = Now()
        Dim mo As Integer
        Dim da As Integer
        Dim funct As String     '保存选择的行
        Dim ret As String
        Dim func As String      '去除空格后的整个函数原型
        Dim fName As String     '函数名
        Dim fPara As String     '函数参数字符串
        Dim paras() As String
        Dim temps() As String
        Dim flag1, flag2, flag3 As Integer
        Dim DocSel As EnvDTE.TextSelection
        DocSel = DTE.ActiveDocument.Selection
        If DocSel.Text = "" Then
            Exit Sub
        End If
        funct = DocSel.Text
        func = Trim(DocSel.Text)
        flag1 = InStr(func, " ")
        ret = Left(func, flag1 - 1)
        flag1 = InStr(func, "::")
        If flag1 = 0 Then
            flag1 = InStr(func, " ")
            func = Right(func, Len(func) - flag1)
        Else
            func = Right(func, Len(func) - flag1 - 1)
        End If

        flag2 = InStr(func, "(")
        fName = Left(func, flag2 - 1)
        func = Right(func, Len(func) - flag2)
        flag3 = InStr(func, ")")
        fPara = Left(func, flag3 - 1)
        paras = Split(fPara, ",")
        For i As Integer = 0 To paras.Length - 1
            paras(i) = Trim(paras(i))
            temps = Split(paras(i))
            paras(i) = temps(temps.Length - 1)
        Next

        DocSel.NewLine()
        DocSel.Text = "// ---------------------------------------------------------------"
        DocSel.NewLine()
        DocSel.Text = "// 名称: " + fName
        DocSel.NewLine()
        DocSel.Text = "// 功能: "
        DocSel.NewLine()
        DocSel.Text = "// 变量: "
        If paras.Length = 0 Then
            DocSel.Text = "无"
        ElseIf paras.Length = 1 And paras(0) = "" Then
            DocSel.Text = "无"
        Else
            DocSel.Text = "[in] " + paras(0) + " -- "
            For j As Integer = 1 To paras.Length - 1
                DocSel.NewLine()
                DocSel.Text = "//       [in] " + paras(j) + " -- "
            Next
        End If
        DocSel.NewLine()
        DocSel.Text = "// 返回: "
        If ret = "void" Then
            DocSel.Text = "无"
        End If
        DocSel.NewLine()
        DocSel.Text = "// 编写: 天蓬," + CStr(Year(obj))
        mo = Month(obj)
        da = Day(obj)
        If mo < 10 Then
            DocSel.Text = "0" + CStr(mo)
        Else
            DocSel.Text = CStr(mo)
        End If
        If da < 10 Then
            DocSel.Text = "0" + CStr(da)
        Else
            DocSel.Text = CStr(da)
        End If
        DocSel.NewLine()
        DocSel.Text = "// ---------------------------------------------------------------"
        DocSel.NewLine()
        DocSel.Text = funct

    End Sub

先凑合用着吧,等熟悉一些了再整完美一些。


2014.6.12修改:

上面的宏需要选中整个函数头部才能正常使用,不太方便,所以可以添加一句

DocSel.SelectLine()

DocSel = DTE.ActiveDocument.Selection

这一句代码之后。这样,只要把光标放到函数头部所在行就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值