2012“种子杯”编程PK赛复赛说明文档
编译器功能拓展尝试
队名 xxx
光学与电子信息学院
队员徐哲钊
电子科学与技术1004班
队员徐洁
电子科学与技术1003班
目录
编译器功能拓展尝试 1
一、编译环境说明 3
3
3
二、程序的结构 4
4
4
三、程序的模块 5
5
5
5
6
6
7
四、功能完成的情况 7
五、程序的亮点 7
六、自定义的功能 7
7
8
七、参加种子杯的感受 8
附录 9
一、编译环境说明
本部分介绍程序的开发的环境,以及从整体上叙述程序工程目录下面的源代码的作用。
使用的编译器为Visual Studio 2008英文版和Visual Studio 2010 中文版。程序的开发、测试、代码整理、文档编写均在win7下面完成。
为了使程序更加简洁易懂,将每个函数的头文件和源文件分开,并且文件名一一对应。其中头文件声明源文件中需要使用的函数,对应的源文件中则定义了函数的功能。
功能点
header、source文件名
函数作用
防止错误赋值
5_1
检测错误赋值
指针归空
5_2
指针归空检查
无效分支
5_3_1
检查if语句
5_3_2
检查while语句
5_3_3
检查switch语句
5_3_4
检查for语句
魔鬼数字
5_4
检查魔鬼数字
未使用的资源
5_5_1
函数未被调用过
5_5_2
宏未被使用
5_5_3
变量未被使用
5_5_4
函数返回值未被使用
函数关系调用图
5_6
打印函数关系图
自定义
5_7_1_Custom
检查内存泄漏
5_7_2_Custom
检查变量使用前是否被赋初值
二、程序的结构
为了方便对命令的读取和处理,首先对命令进行格式化处理。由于格式化时需要替换宏,但是程序中需要检查到宏、需要考虑魔鬼数字,宏未被使用的情况,所以应该首先对魔鬼数字和宏未被使用的情况进行判断,之后再进行宏替换。
具体的格式化步骤为
其中特定字符包括
"(" ")" "," ";" "<" ">" "=" "!" "\" "*" "+" "-"
其中如果出现多个组合一起,则只在组合的字符两侧添加。例如出现">="时只在字符两侧添加,不必再中间添加空格。
这样处理的优势是方便读取命令和字符串:只需要根据";",读取一行命令,根据空格读取字符串或者关键字。
程序中的全局变量为
全局变量名
数据类型
作用
command
string数组
储存命令
cmdCount
int
命令行的数目
errLen
int
错误的个数
errNum
int数组
每一个错误出现的行数
errType
int数组
每个错误的类型
按照需求依次实现每一个功能点,详细见程序的模块。按照顺序检查到各个错误,然后根据错误出
2012种子杯编程PK赛复赛说明文档 来自淘豆网www.taodocs.com转载请标明出处.