Source Insight 小工具

本文介绍两个实用的宏定义:InsertPRINTF用于在指定位置插入打印语句,便于调试;MultiLineComment则实现选中多行内容的快速注释与取消注释功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要解决与光标所在行对齐的问题

代码:

/*-----------------------------------------------
函  数  名 :  InsertPRINTF
功        能 :  插入常用打印 快捷键: Crt+p
修  改  者 :  dtcwyp
日        期 :  2016/05/03
-------------------------------------------------*/
macro InsertPRINTF()//插入常用的打印
{
    hwnd = GetCurrentWnd()

    selection = GetWndSel(hwnd)

    LnFirst =GetWndSelLnFirst(hwnd)      //取首行行号

    hbuf = GetCurrentBuf()
    buf = GetBufLine(hbuf, LnFirst)
    index = 0
    while(index <= strlen(buf))
    {
        if(strlen(buf) == 0)
        {
            PutBufLine(hbuf, LnFirst, "printf(\"dtc[%s][%d]\\n\",__FUNCTION__,__LINE__);")
        }
        else if(index == strlen(buf))
        {
            PutBufLine(hbuf, LnFirst, cat(StrMid(buf,0,index),"printf(\"dtc[%s][%d]\\n\",__FUNCTION__,__LINE__);"))
            break
        }
        else if(((StrMid(buf, index, index+1) != " ")&&(StrMid(buf, index, index+1) != "\t"))
        {
            InsBufLine(hbuf, LnFirst, cat(StrMid(buf,0,index),"printf(\"dtc[%s][%d]\\n\",__FUNCTION__,__LINE__);"))
            break
        }
        index++
    }

    SetWndSel(hwnd, selection)
}

主要解决多行注释只在每行的行首:(缺点:要注意每行是否有“//”)

/*-----------------------------------------------
函  数  名 :  MultiLineComment
功        能 :  多  行  注  释 快捷键: Ctrl+/
修  改  者 :  dtcwyp
日        期 :  2017/01/05
-------------------------------------------------*/
macro MultiLineComment()
{
    hwnd = GetCurrentWnd()
    selection = GetWndSel(hwnd)
    LnFirst =GetWndSelLnFirst(hwnd)      //取首行行号
    LnLast =GetWndSelLnLast(hwnd)      //取末行行号
    hbuf = GetCurrentBuf()
    if(GetBufLine(hbuf, 0) =="//magic-number:tph85666031"){stop}
    Ln = Lnfirst
    buf = GetBufLine(hbuf, Ln)
    len = strlen(buf)
    while(Ln <= Lnlast) {
        buf = GetBufLine(hbuf, Ln)  //取Ln对应的行
        if(buf ==""){                   //跳过空行
            Ln = Ln + 1
            continue
        }
        index = 0
        while(index < strlen(buf))
        {
            if(((StrMid(buf, index, index+1) != " ")&&(StrMid(buf, index, index+1) != "\t"))
            {
                if(strlen(StrMid(buf, index, Strlen(buf))) > 1)
                {
                    if((StrMid(buf, index, index+1) == "/")&&(StrMid(buf,index+ 1, index+2) == "/"))
                    {//需要取消注释,防止只有单字符的行
                        PutBufLine(hbuf, Ln, cat(StrMid(buf,0,index),StrMid(buf, index+2, Strlen(buf))))
                        break
                    }
                }
                if(StrMid(buf,index,index+1) !="/")
                {//需要添加注释
                    PutBufLine(hbuf, Ln, cat(StrMid(buf,0,index),Cat("//", StrMid(buf, index, Strlen(buf)))))
                    break
                }
            }
            index++
        }
        Ln = Ln + 1
    }
    SetWndSel(hwnd, selection)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值