文章目录

文中用到的插件下载地址为 https://download.csdn.net/download/qq_36310253/88093026?spm=1001.2014.3001.5503

1 软件介绍

Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++,C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库,并自动显示有用的上下文信息。

2 初始化新项目

2.1 新建项目

File->New Project,在下面弹出的对话框中输入工程的名字,工程路径选择时源码跟目录即可,然后点击“OK”。项目目录下会生成一个ProjectName.si4project子目录。
在这里插入图片描述

2.2 配置源码路径

完成上一步后,弹出如下对话框,参考如下图所示添加源码路径。然后点击“OK”按钮。
在这里插入图片描述

2.3 添加源文件

完成上一步后,弹出如下对话框,参考如下图所示进行源文件的添加,在添加时勾选地柜添加所有子目录选项,然后点击“OK”。
在这里插入图片描述

完成上一步后,弹出如下对话框,点击“确定”添加文件。
在这里插入图片描述

添加完成后点击下图所示的“Close”按钮,如果有还需要添加的文件点击“Add”,如果有多余添加的选中下图中下面的已经添加的文件然后点击“Remove File”。可以使用ctrl或shift进行多个文件或者文件夹的选择。
在这里插入图片描述

2.4 同步代码(用于生成数据库)

Project->Synchronize Files,弹出如下所示对话框,勾选强制解析所有文件按钮,然后点击“start”按钮开始同步代码。
在这里插入图片描述

同步过程中如下所示,源文件越多越大,同步所花费时间越久。同步完成之后就可以开始阅读编辑代码了。
在这里插入图片描述

3 常用软件配置

3.1 编码格式设置

3.1.1 单个文件编码格式修改

File->Reload As EnCoding,把其他编码格式修改为UTF8。
在这里插入图片描述

3.1.2 全局修改

Options->Preferences->Files,other,Default encoding修改成UTF-8。
在这里插入图片描述

3.2 显示行号设置

Option->File Type Option勾选Show line numbers
在这里插入图片描述

3.3 缩进四个空格设置

Option->File Type Option,参考如下配置
在这里插入图片描述

3.4 右边界显示配置

Option->File Type Option,参考如下配置
在这里插入图片描述

3.5 护眼色背景配置

Options->Preferences->Colors&Fonts->Window Background->Pick Color设置自定义颜色,添加到自定义颜色,依次确定。红199,绿237,蓝204。
在这里插入图片描述

3.6 字体字号配置

Option->File Type Option->C/C++ Source File->Screen Font 进行字体字号的配置,配置好后点击确定然后输入“yes”,再点击yes按钮表示修改成功。
同时建议在下图中文件过滤文本框中添加常见的C/C++文件类型。
在这里插入图片描述

3.7 自定义快捷键

Options->Key Assignments 进入快捷键设置界面,找到自己想要设置的命令。如下图所示选择“Exit”命令,可以看到系统默认的快捷键是“Alt+F4”。
在这里插入图片描述

单击“Assign New Key”按钮后,点击键盘想要设置的快捷键,例如“Ctrl+2”,在Keystrokes对话框中可以看到新设定的快捷键,也可以选择之前的快捷键后点击“Delete Assignment”按钮将已有的快捷键设定删除,设定好后点击“OK”按钮即可完成快捷键的设定。
在这里插入图片描述

3.8 Snippets

使用Snippets面板,可以快速编辑或插入代码片段。点击工具栏 View->Panels->Snippet Window 可以打开Snippets面板,如下图所示。可以在这里面添加或者编译一些常见的代码段。
在这里插入图片描述

添加完整后,输入关键字,例如while可以找到的编辑的代码段,然后找到需要的代码段回车后将在文件中自动补全,如下图所示。
在这里插入图片描述

3.9 Bookmarks

使用Bookmarks面板,可以对代码添加书签备注功能,有利于快速查找标注的代码。我们可以通过 创建新的书签,定位到程序的某一行然后添加说明,之后确定,书签即可添加成功,如下图所示。
在这里插入图片描述

3.10 代码折叠

代码折叠方便阅读源码,该功能的开启如下图所示。
在这里插入图片描述

4 代码阅读常用窗口配置

4.1 软件窗口布局配置

可以参考如下图配置
在这里插入图片描述

4.2 调用关系配置

在Relation窗口点击设计按钮,弹出配置选项对话框,可以参考下图配置。
在这里插入图片描述

5 常用快捷键

快捷键说明
Ctrl + 鼠标右键跳转函数定义
Alt + ,后退
Alt + .前进
F7查看同名符号
F8高亮选中的字符
Ctrl + f查找
F3 或 shift + F3往前查找
F4 或 Shift + F4往后查找
Ctrl + g跳转到指定的行

6 Astyle 插件的使用

Astyle 是一个对代码进行格式化的插件,适用于Keil、IAR、Source Insight和VS Code等软件。官方说明如下:A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective-C, C#, and Java Source Code.
Astyle 的官方链接为:https://sourceforge.net/projects/astyle/,可以在官网中下载最新的软件包。
虽然Source Insight软件自带格式化代码的工具,如下图所示。为了和IAR等其他软件统一,均采用Astyle插件对代码进行格式化。
在这里插入图片描述

将下载好的软件包解压后放置在系统本地的文件夹中,例如D盘下的“D:\ProgramData”文件夹内(建议放在C盘或D盘放置误删除)。放置好后点击Source Insight工具栏Tools->custom commands,进入如下配置界面。
在这里插入图片描述

在弹出的配置界面中点击“Add”按钮,在新弹出的页面(如下图所示)中输入新命令的名字,例如“AstyleCode”,然后点击“OK”按钮。
在这里插入图片描述

在左边的“Command”命令框中选择刚才输入的命令名字“AstyleCode”,然后在“Run”命令命令框里输入D:\ProgramData\astyle-3.4-x64\astyle.exe --style=allman -k3 -W1 -xG -S -s4 -xb -U -p -xf -xh -xC120 -xL -H -Y -xW -w -n %f
注意:D:\ProgramData\astyle-3.4-x64\astyle.exe 为astyle.exe存放的路径。
设置好之后,为了方便使用可以按照3.7章节介绍的方法进行设置,可以设置为“Shift+Alt+F”,和 VS Code 保持一致。
在这里插入图片描述

至此已经完成了AStyle工具的配置,下面解释一下配置中各命令的功能,刚才添加的命令为 --style=allman -k3 -W1 -xG -S -s4 -xb -U -p -xf -xh -xC120 -xL -H -Y -xW -w -n %f

命令含义
-style=allman所有花括号都单独成一行的风格
-k3指针位置风格,对应为char *_ptr,及指针靠近变量
-W1&风格,对应为char &fool; 及地址符靠近变量
-xG在逗号后面添加空格
-Sswitch语句下的case添加缩进
-s4一次缩进为4个空格键
-xb(e.g. ‘if’, ‘for’, ‘while’…)语句后加回车
-U移除括号两边不必要的空格
-p在 =、+、- 等操作符两边插入空格
-xf定义函数时函数返回值与函数名置为同一行
-xh声明函数时函数返回值与函数名置为同一行
-xC120一行最长编码为120
-xL根据逻辑代码回车
-H(e.g. ‘if’, ‘for’, ‘while’…)与 ( 间加空格
-Y让注释和代码一起缩进
-xW宏定义嵌套时缩进
-w宏定义换行缩进
-n运行时不生成备份文件,即默认的.orig文件
%f指当前文件

更多配置选项可以参考官方文档,在解压后的文件夹中 “astyle-3.4-x64\doc\ astyle.html”。

7 PC-Lint 的使用

PC-Lint是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,暂无正版PC-Lint,建议使用开源的sourceinsight-scan插件进行代码静态分析。

8 sourceinsight-scan

sourceinsight-scan 是一款集成在SourceInsight中的c/c++代码静态分析插件,集成了cppcheck,coverity,pclint等业界优秀的静态分析工具的优点。旨在帮助开发人员,在IDE中快速发现编译器无法发现的非语法错误,降低修复成本。无需编译,平均扫描速度高达10W行/分钟,快速帮您发现潜在的质量风险,包括空指针,越界,内存泄漏及潜在的逻辑错误,平均准确率高达80%。支持个性化定制需求,包括规则配置,误报屏蔽,路径屏蔽,配置自定义判空宏等。
sourceinsight-scan插件遵从GNU General Public License version 3.0 (GPLv3)开源协议。该插件的具体使用参考官方文档《SourceInsight_Scan配置&使用说明.pdf》

注:Cppcheck 和 sourceinsight-scan 功能类似,有需要自行下载安装,Cppcheck既有开源版本,也有高级版(带有扩展功能和支持),使用时需要特别注意不要使用商业版本。
Cppcheck是C/C++代码的静态分析工具。它提供了独特的代码分析来检测bug,并专注于检测未定义的行为和危险的编码结构。

9 SourceMonitor

SourceMonitor 是一款免费的软件,运行在Windows平台下。它可对多种语言写就的代码进行度量,包括C、C++、C#、Java、VB、Delphi和HTML,并且针对不同的语言,输出不同的代码度量值。它只是一个“度量”工具,但是通过基本的度量,可以从代码表面层次发现一些根本的,基础的问题,所以将其作为介绍的第一个工具,也应当成为最基础的一个工具来为软件质量把关。
在这里插入图片描述

SourceMonitor可以度量总行数、语句数、分支语句比例、注释比例、函数个数、函数圈复杂度和函数深度等信息,生成结果如下所示。(参考 软件质量之道:SourceMonitor)。
在这里插入图片描述

Source Insight也可以集成该工具,参考 在SourceInsight中使用SourceMonitor对C语言程序进行度量,以及Kiviat图说明

10 宏文件的使用

Source Insight 支持强大的宏编制,官网也有许多相应的例子,官网链接为:https://www.sourceinsight.com/download/macro-files/。使用宏可以极大的提高编码的效率。

10.1 quicker.em

据说Quicker.em宏功能扩展文件是华为的员工进行整理和开发的,并且在华为系公司里得到了广泛的应用。根据公司内部的定义对该宏进行了一些修改。

10.1.1 quicker.em的安装

(1)打开base这个工程Project->Open Project,选择base工程,点击OK即可打开。
在这里插入图片描述

(2)将宏文件quicker.em添加到该base工程中,为了方便找到文件quicker.em且不会被误删除,建议将该文件放置在Source Insight默认的其他宏文件的路径下,如下所示。
在这里插入图片描述

(3)设置宏的快捷方式,参照3.7章节的方法,找到Marco:AutoExpand,添加快捷键即可,一般推介用 Ctrl+Enter 组合键。

10.1.2 quicker.em的使用

参考附件1使用quicker.em宏。

10.2 comments.em

该宏实现的是快捷注释单行或者多行代码的功能,包含 /* */#if 0 #endif 以及 // 等三种注释方式。参考 8.1.1 小节将该宏文件放在安装目录的制定位置,如下所示:
在这里插入图片描述

参考该宏文件作者的快捷键的定义和3.7小节,将相应的快捷键设置如下:
在这里插入图片描述

10.3 openfolder.em

该宏实现的是快速打开当前文件所在的文件夹,参考3.7小节可以将此功能快捷键设定为Ctrl +T
在这里插入图片描述

11 其他

其他功能参考互联网资源或者下载的网友的文档《Source_Insight提高工作效率.ppt》。

附件1 Quicker.em使用

附件1内容参考博客,仅对源文档格式进行重新排版
https://blog.csdn.net/ZCShouCSDN/article/details/84375260

1.1 标准C语言扩展

()中的命令是该命令的短命令,所有的命令都能用F4(向前搜索)、F3(向后搜索)来或Ctrl Enter(向后)定位,为了方便最好能够设置si的search菜单下的search窗口(Ctrl f)选中select when found。

1.1.1 /* 自动生成/* */

该命令自动生成C语言的注释,它能自动换行对齐,在把文档中一长串注释拷贝过来时特别管用,不用自己去对齐了。还能自动识别中文和英文单词,对于中文不会把一个字分开,对于英文单词分开时会自动添加连字符,下面是一个注释的例子

abcdefghijk = abcd + cdefg + hijk      /*该命令自动生成C语言的注释,它能自动换行对齐,在把文档中一长串注释拷贝过来时特别管用,不用自己去对齐了。*/

1.1.2 { 自动生成 { }

支持块命令插入,该命令自动生成

{
      
}

1.1.3 while (wh) 自动生成While语句

该命令自动生成如下格式,支持块命令插入

while ( # )
{
    #
}

1.1.4 if 自动生成if语句

支持块命令插入
if 生成if结构的语句
ife 对应生成if else结构的语句
ifs 对应生成if elseif else结构的f语句
该命令自动生成如下格式

if ( # )
{
    #
}

1.1.5 for 自动生成for语句

支持块命令插入,该命令自动生成如下格式

for ( #; #; # )
{
    #
}

1.1.6 fo 自动生成for语句

与前一条命令相比它直接会定义循环变量

UINT32 ulI = 0;

for ( ulI = 0;  ulI < #;  ulI++ )
{
    #
}

1.1.7 do 自动生成 do while语句

支持块命令插入,该命令自动生成如下格式

do
{
    #
} while ( # );

1.1.8 #ifd 自动生成 #ifdef 命令

支持块命令插入,该命令生成如下格式

#ifdef UMSC
#endif /* UMSC */
UMSC为提示输入值

1.1.9 #ifn 自动生成 #ifndef 命令

支持块命令插入,该命令生成如下格式

#ifndef UMSC
#endif /* UMSC */
UMSC为提示输入值

1.1.10 #if 自动生成 #if 命令

支持块命令插入,该命令生成如下格式

#if  ( UMSC == 1)
#endif /*if  ( UMSC == 1) */
UMSC为提示输入值

1.1.11 cpp 自动生成适用于c++的c原型说明定义

该命令生成如下格式

#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */

1.1.12 switch (sw) 自动生成switch语句

该命令将提示输入case的个数,生成如下格式

switch ( # )
{
    case #:
        #
        break;
    default:
         #
}

注意该命令还有一个重要的功能,在执行该命令之前如果先剪接一个case用的定义组然后执行该命令,提示输入case个数时输入0,它能自动生成全部定义
具体如下:

typedef enum SAAL_EXTERNAL_EVENT
{
    AAL_ESTABLISH_INDICATION = 4,/*test*/
      /*test*/
   AAL_ESTABLISH_CONFIRM = 5,
   /*test*/ AAL_RELEASE_REQUEST = 6,
    AAL_RELEASE_INDICATION = 7, //test
//      AAL_RELEASE_INDICATION  = 20
   AAL_RELEASE_CONFIRM = 8,
    AAL_DATA_REQUEST = 9,
    AAL_DATA_INDICATION = 10,

} SAAL_EXTERNAL_EVENT_ENUM ;

或者是如下的宏定义形式

#define      AAL_ESTABLISH_INDICATION  4
/*test*/
#define      AAL_ESTABLISH_CONFIRM  5
#define      AAL_RELEASE_REQUEST  6
#define  /*test*/    AAL_RELEASE_INDICATION  7
#define      AAL_RELEASE_CONFIRM  8  //test
#define      AAL_DATA_REQUEST  9     /*test*/
#define      AAL_DATA_INDICATION  10

选中蓝色部分,将其拷贝到剪贴板(Ctrl C),注意不要包含红色部分,然后执行sw命令提示输入case的个数这是填0,就会自动生成如下格式非常方便

switch( # )
{
    case AAL_ESTABLISH_INDICATION:
        #
        break;
    case AAL_ESTABLISH_CONFIRM:
        #
        break;
    case AAL_RELEASE_REQUEST:
        #
        break;
    case AAL_RELEASE_INDICATION:
        #
        break;
    case AAL_RELEASE_CONFIRM:
        #
        break;
    case AAL_DATA_REQUEST:
        #
        break;
    case AAL_DATA_INDICATION:
        #
        break;
    default:
        #
}

1.1.13 case (ca)自动生成case语句

支持块命令输入,该命令生成如下格式,用它可以避免遗漏break

case #:
    #
    break; 

1.1.14 struct (st) 自动生成结构类型

该命令自动生成如下结构定义,它提示输入结构名,会自动转换成大写形式,并且自动在其后添加_STRU作为结构类型

typedef struct HELLO_TEST
{
     #
}HELLO_TEST_STRU;

1.1.15 enum (en) 自动生成枚举类型

该命令自动生成如下结构定义,它提示输入结构名,会自动转换成大写形式,并且自动在其后添加_STRU作为结构类型

typedef enum HELLO_TEST
{
     #
}HELLO_TEST_ENUM;

1.2 标准说明生成

1.2.1 config (co) 配置用户名和标题的说明语种

用户名就是前面自动生成的作者,修改者的名字,语种,就是前面提到的文件头说明和函数头说明所采用的的语言有中文和英文两种选择

1.2.2 file (fi) 生成标准的文件头

自动生成如下格式,它能自动取得文件名,作者名,时间,以及函数列表,而且在生成的过程中会主动弹出功能描述能的内容输入对话框(提示对话框只能输入256个字符),输入的内容能够自动换行对齐,这样既可以避免遗漏说明,而且一般在详细设计中对每个文件的主要功能都有详细的描述,只要把这些描述 拷贝过来即可,它能自动排列好, 非常方便。

1.2.3 func (fu) 生成标准的函数头说明

其自动生成如下函数头,该函数必须在该函数的前一行执行,它能自动取得函数名,能够自动取得函数的输入、输出参数,并且排列好,同时生成日期和作者。能够 提示输入功能描述,输入的内容能够自动换行对齐,这样既可以避免遗漏说明,而且一般在详细设计中对每个函数的主要功能都有详细的描述,只要把这些描述 拷贝过来即可,它能自动排列好, 非常方便。 (因为SI的宏功能有限,没能自动加入调用函数和被调函数的功能)
如果不是在已存在的函数前执行则提示输入函数名,提示输入函数描述,提示输入返回值类型,提示输入函数入口参数,输完后按Esc退出

/**************************************************************************函 数 名  : afdaain
 功能描述  : 测试函数
 输入参数  : int d
                     int t
                     char t
 输出参数  : 无
 返 回 值  :   int 
 调用函数  : 
 被调函数  : 
 
 修改历史      :
 1. 日期       : 2002.5.11
    作者       : lushengwen
    修改方式   : 新生成函数
**************************************************************************/

1.2.4 hi 增加修改历史列表

自动在该行增加修改历史列表,用于文件头和函数头说明中的历史记录更新,其添加形式如下

2. 日    期   : 2002517日
    作    者   : lushengwen
    修改内容   : lkasjdfkla

1.2.5 hd 自动生成函数头文件

该命令能够自动生成但前C文件的头文件定义,包括常用的宏定义,还有全部的函数原型定义。

1.2.6 Hdn 生成新的头文件

该命令能够自动生成指定的的头文件定义,包括常用的宏定义,提示输入函数原型的类型。

1.3 代码修改注释

1.3.1 pn 添加问题单号

在进行问题单修改时都要求在修改的地方注明问题单号和修改人以及修改时间,大部分一个问题单的修改都会涉及到几个地方,本功能提供自动取问题单号的功能,下面的几个命令所生成的问题单号就是有它提供,如果输入为#则不显示问题单号

1.3.2 ap 添加问题单修改说明

该命令提示输入问题单号和修改原因,生成如下格式的说明

1.3.3 ab 添加开始说明

它能自动生成如下说明:
1.有问题单号的情况,其中问题单号是由ap命令加入的。

/*BEGIN: Added by lushengwen, 2002/5/13   问题单号:D02556*/

2.没有问题单号的情况,

/*BEGIN: Added by lushengwen, 2002/5/13*/

1.3.4 ae 添加结束命令

该命令是as的对应命令,表示结束添加,支持块命令操作

1.3.5 abg 插入添加开始和结束说明

该命令是前两个命令的组合,支持块命令操作

1.3.6 db 删除开始命令

它能自动生成如下说明:
1.有问题单号的情况,其中问题单号是由ap命令加入的。

/*BEGIN: Deleted by lushengwen, 2002/5/13   问题单号:D02556*/

2.没有问题单号的情况,

/*BEGIN: Deleted by lushengwen, 2002/5/13 */

1.3.7 de 删除结束命令

该命令是ds的对应命令,表示删除结束

1.3.8 dbg 插入删除开始和结束说明

该命令是前两个命令的组合,支持块命令操作

1.3.9 mb 修改开始命令

它能自动生成如下说明:
1.有问题单号的情况,其中问题单号是由ap命令加入的。

/*BEGIN: Modified by lushengwen, 2002/5/13   问题单号:D02556*/

2.没有问题单号的情况,

/*BEGIN: Modified by lushengwen, 2002/5/13 */

1.3.10 me 修改结束命令

该命令是ms的对应命令,表示删除结束

1.3.11 mbg 插入修改开始和结束说明

该命令是前两个命令的组合,支持块命令操作

1.4 其余几个常用宏

1.4.1 将从C++的 // 注释改为标准的C /* */注释

ComentCPPtoC() 文件中的//注释自动修改为/* */注释,因为很多C编译器不能很好的处理C++风格的 // 注释,用该命令可以方便的将选中区域内的//注释进行修改,建议将该宏定义在菜单中。

1.4.2 能自动将Tab转换成空格(mstp_out.c)

ReplaceBufTab() 自动将单前文件中的Tab转换成空格
ReplaceTabInProj() 自动将工程中的文件中的Tab转换成空格
因为不同的编辑器对tab的长度定义不一至,造成代码格式紊乱,编程规范是不允许用tab键的,可以用该宏来将整个文件的tab进行替换,非常方便,建议将该宏定义在菜单中

1.4.3 插入当前的函数名

InsertFuncName () 能自动的插入本函数名,现在的函数名一般较长,特别是在调试打印代码中为了显示出出错的函数经常需要输入本函数名,该宏能带来极大方便。建议定义为一个热键 ctrl 1

1.4.4 自动在函数入口、出口插入、删除打印函数

注意使用本功能时一定要求所有的语句符合公司编程规范,要求一条语句一行,因为各种编码情况很复杂,特别是老代码和有大量条件编译的情况下很难覆盖各种情况,最好在执行完后再检查一遍。不推荐使用工程内的插入和删除。
InsertTraceInfo() 能够自动在函数的出、入口首尾加入打印代码,即在光标处加入一个进入函数的打印,在函数的返回处加入一个出函数的打印,用于调试跟踪时很方便,建议定义为热键 Ctrl t
AutoInsertTraceInfoInBuf()能够在当前文件的函数出入口加入打印信息,定义菜单
AutoInsertTraceInfoInPrj()能够在当前工程的函数出入口加入打印信息,定义为菜单
RemoveTraceInfo() 删除InsertTraceInfo()添加的打印信息,定义为菜单
RemoveCurBufTraceInfo()删除文件中全部的InsertTraceInfo()添加的打印信息,定义为菜单
RemovePrjTraceInfo()删除但前工程中全部的InsertTraceInfo()添加的打印信息,定义为菜单

1.4.5 自动格式当前行

FormatLine() 能够自动将一行长的文字分成多行,并且从第二行开始,起始列为关标所在列,该宏是为了弥补因为对话框只能处理256个字符而编写的,当需要输入超过256个字符的说明时,就可以先把它拷贝到第一行,然后执行本宏,进行分行对齐。

1.4.6 更新函数列表

UpdateFunctionList() 能够自动在光标所在行重新生成函数列表,用于函数头说明的函数列表更新。

1.4.7 复合语句删除

DelCompoundStatement()能自动删除复合语句,定义热键 Ctrl D
对于如下语句,如果我想删除条件 ulCount > 0,只需将光标放在if语句这一行(蓝色行),执行 Ctrl D 即可

    stSubsystemRec.hwRBSubSystemCpuAveUsageLimit = CPU_RESTORE_THRESHOLD;
    if( ulCount > 0 )
    {
        stSubsystemRec.hwRBSubSystemAdminStatus = ADSTATUS_DOWN;
        stSubsystemRec.hwRBSubSystemCpuMaxUsageLimit = CPU_ALARM;
        stSubsystemRec.hwRBSubSystemDSPAveUsageLimit = DSP_ALARM;
        stSubsystemRec.hwRBSubSystemDSPMaxUsageLimit = DSP_RESTORE;
        stSubsystemRec.hwRBSubSystemOperStatus = OPSTATUS_OTHER;
    }
    stSubsystemRec.hwRBSubSystemIndex = 0;
    stSubsystemRec.hwRBSubSystemIpAddress = ulIpAddr;
执行结果
    stSubsystemRec.hwRBSubSystemCpuAveUsageLimit = CPU_RESTORE_THRESHOLD;
    stSubsystemRec.hwRBSubSystemAdminStatus = ADSTATUS_DOWN;
    stSubsystemRec.hwRBSubSystemCpuMaxUsageLimit = CPU_ALARM;
    stSubsystemRec.hwRBSubSystemDSPAveUsageLimit = DSP_ALARM;
    stSubsystemRec.hwRBSubSystemDSPMaxUsageLimit = DSP_RESTORE;
    stSubsystemRec.hwRBSubSystemOperStatus = OPSTATUS_OTHER;
    stSubsystemRec.hwRBSubSystemIndex = 0;
    stSubsystemRec.hwRBSubSystemIpAddress = ulIpAddr;

1.4.8 其它跟扩展命令对应的宏
下面宏可以根据需要定义为热键

说明设定的快捷键
ClearPrombleNo清除问题单Alt+Del
ExpandBraceLarge加入{} /支持块输入/Ctrl+]
ExpandBraceLittle加入() /支持块输入/Ctrl+Shift+9
ExpandBraceMid加入[] /支持块输入/Alt+[
FileHeaderCreate生成文件头说明Ctrl+Shift+i
FunctionHeaderCreate生成函数头说明Ctrl+Shift+u
HeaderFileCreate生成头文件Ctrl+Shift+d
InsertCase插入case语句Ctrl+Alt+c
InsertDo插入do语句 /支持块输入/Ctrl+Alt+d
InsertElse插入else语句 /支持块输入/Ctrl+Alt+e
InsertFor插入for语句 /支持块输入/Ctrl+Alt+f
InsertIf插入if语句 /支持块输入/Ctrl+Alt+I
InsertSwitch插入switch语句Ctrl+Alt+s
InsertWhile插入while语句 /支持块输入/Ctrl+Alt+w
InsIfdef插入#ifdef语句 /支持块输入/Ctrl+3
PredefIfStr插入#if语句 /支持块输入/Alt+3
InsertReviseAdd插入添加说明 /支持块输入/Ctrl+Shift+a
InsertReviseDel插入删除说明 /支持块输入/Ctrl+Shift+r
InsertReviseMod插入修改说明 /支持块输入/Ctrl+Shift+m
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐