Source Insight里头文件注释和函数头的注释
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里头文件注释和函数头的注释的更多相关文章
- VA中用文件头注释和函数头注释Suggestions
写C++代码,不能不用VA,这里贴两个我最常用的注释Suggestions. [1.File Header 文件头注释] /*** @file $FILE_BASE$.$FILE_EXT$* ...
- Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释
转载:http://blog.csdn.net/xzytl60937234/article/details/70455777 在VAssistX中为C++提供了比较规范注释模板,用这个注释模板为编写的 ...
- Source Insight新建工程文件
options->document options ->document type ->c source file 下 //添加 “.S”结尾的汇编语言支持 project -& ...
- 代码阅读工具:Source Navigator和Source Insight
(摘自http://www.cnblogs.com/yc_sunniwell/archive/2010/08/25/1808322.html) 一.Source Insight实用技巧: Source ...
- 2016-10-17: source insight插件
使用快捷键注释,单行注释,多行注释,#if 0注释 将文件 mycomment.em点此下载放到sourceinsight的Base工程的路径下(一般是在C:\Documents and Settin ...
- source insight插件
直使用sourceinsight编辑C/C++代码,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直 使用该工具做C/C++开发,sourceinsight能够满足 ...
- [SourceInsight].source insight 使用技巧
转自:https://www.veryarm.com/140428.html 1 开胃菜-初级应用 1.1 选择美丽的界面享受工作 虽然不能以貌取人,但似乎从来没有人责备以貌取软件的.SI的华丽界 ...
- 给Source Insight做个外挂系列之一--发现Source Insight
一提到外挂程序,大家肯定都不陌生,QQ就有很多个版本的去广告外挂,很多游戏也有用于扩展功能或者作弊的工具,其中很多也是以外挂的形式提供的.外挂和插件的区别在于插件通常依赖于程序的支持,如果程序不支持插 ...
- Source Insight 插件
一提到外挂程序,大家肯定都不陌生,QQ就有很多个版本的去广告外挂,很多游戏也有用于扩展功能或者作弊的工具,其中很多也是以外挂的形式提供的.外挂和插件的区别在于插件通常依赖于程序的支持,如果程序不支持插 ...
随机推荐
- 机器学习技法笔记:15 Matrix Factorization
Roadmap Linear Network Hypothesis Basic Matrix Factorization Stochastic Gradient Descent Summary of ...
- Fiddler怎样抓取手机的包
Fiddler作为代理服务器,可以拦截到手机发出的请求,再经过Fiddler发送到服务器,获取到服务器响应的数据,这个过程,只要设置配置好了,使用过程不受影响. 要想抓取到手机的包,先要给手机设置一个 ...
- Cannot determine embedded database driver class for database type NONE
springboot+jpa使用自定义配置文件连接数据库报错:Cannot determine embedded database driver class for database type NON ...
- 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) —— 1.Practice questions
[解释] 应该是same padding 而不是 valid padding . [解释] 卷积操作用的应该是adding additional layers to the network ,而是应该 ...
- error: device unauthorized —— android studio 链接不上虚拟机
问题原因: 以前用Eclipse开发的时候在环境变量里配置了ANDRIOD_SDK_HOME. 解决方法: 将电脑环境变量中的ANDRIOD_SDK_HOME删除,重新运行adb devices,手机 ...
- nginx如何实现高并发
nginx如何实现高并发 简单来讲,就是异步,非阻塞,使用了epoll和大量的底层代码优化. 稍微详细一点展开的话,就是nginx的特殊进程模型和事件模型的设计. 进程模型 nginx采用一个mast ...
- 一款jq的计时器
举例子: http://files.cnblogs.com/Alandre/201201031633347950.rar
- SpringBoot2.0源码分析(一):SpringBoot简单分析
SpringBoot2.0简单介绍:SpringBoot2.0应用(一):SpringBoot2.0简单介绍 本系列将从源码角度谈谈SpringBoot2.0. 先来看一个简单的例子 @SpringB ...
- mybatis教程6(逆向工程)
什么是逆向工程 简单点说,就是通过数据库中的单表,自动生成java代码. Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类 ...
- Django之模型层(单表操作)
一.ORM简介 MVC和MTV框架中包含一个重要部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库. ORM是‘对象-关系- ...