1.将下述代码拷贝入一个文件,扩展名为em

2.打开BASE工程,添加本文件,并重新同步

3.添加hh_InsertFuncHeader的快捷键,即为函数头注释,光标需要放在函数名那一行,否则无效

4.添加hh_InsertFileHeader的快捷键,即为文件头注释,且头文件(目前只是.h)和源文件(非.h文件)不同,头文件里有

macro hh_InsertFuncHeader()
{
hbuf = GetCurrentBuf()
szFunc = GetCurSymbol()
if (strlen(szFunc) == 0)
{
return
}

ln = GetSymbolLine(szFunc)
if (ln == "-1")
{
return
}

symbol = GetSymbolLocationFromLn(hbuf, ln)
if ((symbol == Nil) || (symbol.Type != "Function"))
{
return
}

szMyName = hh_get_author_name()

szTime = GetSysTime(1) 
Day = szTime.Day 
if (Day < 10)
{
Day = "0" # szTime.Day
}
Month = szTime.Month 
if (Month < 10)
{
Month = "0" # szTime.Month
}
Year = szTime.Year

funcLen = strlen(szFunc)

hsyml = SymbolChildren(symbol)
cchild = SymListCount(hsyml)

InsBufLine(hbuf, ln++, "/*****************************************************************************/")
InsBufLine(hbuf, ln++, "/**")

InsBufLine(hbuf, ln++, "* \author @szMyName@")
InsBufLine(hbuf, ln++, "* \date @Year@/@Month@/@Day@")
InsBufLine(hbuf, ln++, "* \brief ")

ichild = 0
while (ichild < cchild)
{
childsym = SymListItem(hsyml, ichild)
if (childsym.type == "Parameter")
{
symNameLen = strlen(childsym.symbol)
name = strmid(childsym.symbol, funcLen+1, symNameLen)
InsBufLine(hbuf, ln++, "* \param " # name)
}
ichild = ichild + 1
}
SymListFree(hsyml)

InsBufLine(hbuf, ln++, "* \return ")
InsBufLine(hbuf, ln++, "* \remarks ")

InsBufLine(hbuf, ln++, "******************************************************************************/")

// put the insertion point inside the header comment
SetBufIns(hbuf, ln, 0)
}

macro hh_InsertFileHeader()
{
hbuf = GetCurrentBuf()
fullfileName = GetBufName(hbuf)
fileName = hh_GetFileNameFromFull(fullfileName)
szMyName = hh_get_author_name()
ln = 0

szTime = GetSysTime(1) 
Year = szTime.Year
Month = szTime.Month
if (Month < 10)
{
Month = "0" # szTime.Month
}
Day = szTime.Day
if (Day < 10)
{
Day = "0" # szTime.Day
}

fileType = strmid(fileName, strlen(fileName)-2, strlen(fileName))

InsBufLine(hbuf, ln++, "/*****************************************************************************/")
InsBufLine(hbuf, ln++, "/**")
InsBufLine(hbuf, ln++, "* \file " # fileName)
InsBufLine(hbuf, ln++, "* \author " # szMyName)
InsBufLine(hbuf, ln++, "* \date @Year@/@Month@/@Day@")
InsBufLine(hbuf, ln++, "* \version V1")
InsBufLine(hbuf, ln++, "* \brief 文件描述")
InsBufLine(hbuf, ln++, "* \note Copyright (c) 2000-2020 XXXXX公司")
InsBufLine(hbuf, ln++, "* \remarks 修改日志")
InsBufLine(hbuf, ln++, "******************************************************************************/")

if (fileType == ".h")
{
ln = hh_InsertHeaderFileHeader(hbuf, fileName, ln)
}
else
{
ln = hh_InsertSourceFileHeader(hbuf, fileName, ln)
}

SetBufIns(hbuf, ln, 0)
}

macro hh_get_author_name()
{
var szMyName
szMyName = getenv(MYNAME)
if (szMyName == Nil)
{
szMyName = ask("What's your name?");
putenv(MYNAME, szMyName);
}

return szMyName
}

macro hh_InsertHeaderFileHeader(hbuf, fileName, ln)
{
hbuf = GetCurrentBuf()
szMyName = hh_get_author_name()

tmpFileName = toupper(fileName)
i=0
var upperFileName
while (i++ < strlen(tmpFileName))
{
ch = strmid(tmpFileName, i-1, i)

if (ch == ".")
{
upperFileName = cat(upperFileName, "_")
}
else
{
upperFileName = cat(upperFileName, ch)
}
}
upperFileName = cat("_", upperFileName)
upperFileName = cat(upperFileName, "_")

InsBufLine(hbuf, ln++, "#ifndef " # upperFileName)
InsBufLine(hbuf, ln++, "#define " # upperFileName)
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 头文件引用 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "#ifdef __cplusplus")
InsBufLine(hbuf, ln++, "extern \"C\"")
InsBufLine(hbuf, ln++, "{")
InsBufLine(hbuf, ln++, "#endif")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 常量定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 宏定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 全局数据类型定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 全局变量声明 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 全局函数声明 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "#ifdef __cplusplus")
InsBufLine(hbuf, ln++, "}")
InsBufLine(hbuf, ln++, "#endif")
InsBufLine(hbuf, ln++, "#endif")
InsBufLine(hbuf, ln++, "")

return ln
}

macro hh_InsertSourceFileHeader(hbuf, fileName, ln)
{
hbuf = GetCurrentBuf()
szMyName = hh_get_author_name()

InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 头文件引用 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 局部常量定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 局部宏定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 局部数据类型定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 局部函数声明 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 局部变量定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 全局变量定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 全局函数定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")
InsBufLine(hbuf, ln++, "/*****************************************************************************")
InsBufLine(hbuf, ln++, "* 局部函数定义 *")
InsBufLine(hbuf, ln++, "*****************************************************************************/")
InsBufLine(hbuf, ln++, "")

return ln
}

macro hh_GetFileNameFromFull(fullfileName)
{
len = strlen(fullfileName)
i = len

while (i-- > 0)
{
ch = strmid(fullfileName, i, i+1)

if (ch == "\\")
{
return strmid(fullfileName, i+1, len)
}
}

return ""
}

Source Insight里头文件注释和函数头的注释的更多相关文章

  1. VA中用文件头注释和函数头注释Suggestions

    写C++代码,不能不用VA,这里贴两个我最常用的注释Suggestions. [1.File Header 文件头注释] /*** @file     $FILE_BASE$.$FILE_EXT$* ...

  2. Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释

    转载:http://blog.csdn.net/xzytl60937234/article/details/70455777 在VAssistX中为C++提供了比较规范注释模板,用这个注释模板为编写的 ...

  3. Source Insight新建工程文件

    options->document options ->document type ->c source file 下 //添加 “.S”结尾的汇编语言支持   project -& ...

  4. 代码阅读工具:Source Navigator和Source Insight

    (摘自http://www.cnblogs.com/yc_sunniwell/archive/2010/08/25/1808322.html) 一.Source Insight实用技巧: Source ...

  5. 2016-10-17: source insight插件

    使用快捷键注释,单行注释,多行注释,#if 0注释 将文件 mycomment.em点此下载放到sourceinsight的Base工程的路径下(一般是在C:\Documents and Settin ...

  6. source insight插件

    直使用sourceinsight编辑C/C++代码,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直 使用该工具做C/C++开发,sourceinsight能够满足 ...

  7. [SourceInsight].source insight 使用技巧

    转自:https://www.veryarm.com/140428.html 1  开胃菜-初级应用 1.1  选择美丽的界面享受工作 虽然不能以貌取人,但似乎从来没有人责备以貌取软件的.SI的华丽界 ...

  8. 给Source Insight做个外挂系列之一--发现Source Insight

    一提到外挂程序,大家肯定都不陌生,QQ就有很多个版本的去广告外挂,很多游戏也有用于扩展功能或者作弊的工具,其中很多也是以外挂的形式提供的.外挂和插件的区别在于插件通常依赖于程序的支持,如果程序不支持插 ...

  9. Source Insight 插件

    一提到外挂程序,大家肯定都不陌生,QQ就有很多个版本的去广告外挂,很多游戏也有用于扩展功能或者作弊的工具,其中很多也是以外挂的形式提供的.外挂和插件的区别在于插件通常依赖于程序的支持,如果程序不支持插 ...

随机推荐

  1. .NET手记-友盟消息推送服务器端加密算法的实现

    最近为App开发消息推送功能,这里我们采用了友盟的消息推送服务,但其后台简陋,可定制化程度低,所以决定接入服务器端API,在自己的服务器上部署一套推送服务. 其中涉及到很多问题,首先要解决的就是与友盟 ...

  2. Liferay7 BPM门户开发之8: Activiti实用问题集合

    1.如何实现审核的上级获取(任务逐级审批) 这个是必备功能,通过Spring的注入+Activiti表达式可以很容易解决. 可参考: http://blog.csdn.net/sunxing007/a ...

  3. Nginx+apache/Tomcat实现反向代理与动静分离

    其实本人比较喜欢nginx跑静态和做负载反向代理,动态php还是交给apache处理比较稳定,jsp就交给tomcat.resin或jboss.nginx跑静态的能力是无与伦比的,是目前web服务器里 ...

  4. Shell脚本中实现自动补全功能

    对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...

  5. volatile 关键字了解与使用

    前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能. 首先来看看为什么会出现这个关键字. 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个 ...

  6. Ubuntu/CentOS 系统上安装与配置Nginx

    一.在线安装: Ubuntu:sudo apt-get install nginx CentOS: sudo yum install nginx 二.安装后的位置: 1.服务地址:/etc/init. ...

  7. js禁止鼠标右键功能

    1.禁止指定元素 document.getElementById("active-intro").oncontextmenu = function () { event.retur ...

  8. vue axios封装以及API统一管理

    在vue项目中,每次和后台交互的时候,经常用到的就是axios请求数据,它是基于promise的http库,可运行在浏览器端和node.js中.当项目越来越大的时候,接口的请求也会越来越多,怎么去管理 ...

  9. Nexus安装、使用说明 (转)

    1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下 载构件无疑加大了仓库的负载 ...

  10. zabbix 监控基础

    一.监控系统基础概念 1.监控系统的工作内容 数据采集 --> 数据存储 --> 数据展示 --> 报警 传感器    时间序列数据    趋势图  采集到的数据超出阈(yu)值 2 ...