下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VC+6.0操作简介VC+6.0 界面工作区窗口:VC+6.0界面如下图所示:01 - fill天中文vc*+包含 Classview、FileView、等选项卡,各 选项卡中以树形结构形式列出了项目所包含 的各种成分。J文件骗辑查看插入工程編译13 Q制芷电11 (Globals)F|少,mcrnbefs .11 . main-cppllinclude hvoid inain()-! X编辑窗口:编辑窗口可以有多个,用 来编辑源代码。d 01 exe - Q error(s), 0 iarnlngCs)一Um编怪/调试_X杳栈文件1 X鸟卜迂件g X结果H * 11 ifReady输出窗口:
2、用来显示编译、调试、等信息。VC+6.0环境的基本操作1. 建立应用程序操作步骤如下:(1) 关闭当前工作区:【文件】【关闭工作区】(必要时)(2) 建立工程:【文件】【新建】(出现“新建”对话框)新建iJjsl选择文件要插入的工程(插入文件工程工作区其它文档.ATL COM AppWizardTTCluster Resource Type Wizard Custom AppWizard Database Project DevStudio Add-in Wizard Extended Stored Proc Wizard 書ISAPI Extension Wizard (MakefileIM
3、FC ActiveX Controlwizard 0MFC AppWizard (dll| MMFC AppWizard (exe 駅New Database Wizard txl AppWizard ti Utility Project tn Win32 Application fi期*KMiB艳丽阿TBmm I、Win32 Dynamic-Link Library JWin32 Static Library工程C位置:G:TMP04席旦创建新工作区A添加至现看匚r 厂a从属性的;P平台:|Win32结東在“新建”对话框中选中“工程”选项卡选中其中的“ Win32 ConsoleApplic
4、ation ”项 选择存储“位置” 输入工程名 单击“确定”按钮(出现“Win32 Console App lication ”对话框)What kind of Console Application do you want to create?i-iir111 rii-iini-11-iir111 rii-iinr|(* 如1 empl projectjC A 总 imp lea pp lication.r A Hello, World! application.C An application thal supports MFC.取消IB 上一个 I N 1M在“ Win32 Con so
5、le AppI icati on ”对话框中选择“ An empty p roject ”选项 单 击“完成”按钮注意:在操作过程中,如果出现提示性对话框,可根据具体情况按“确定”或“取消”按钮。至此,一个新的工程已经建立,接下来,可以在该工程中建立文件或(和)将已经存在的文件添加到工程中:在工程中新建文件:【工程】【添加工程】【新建】(出现“新建”对话框)文件 工程I其它文档I圃Active Server Page LQBinary File Bitmap File B C/C+ Header File 0 C+ Source File 3 Cursor FileHTML Page icon
6、 File iMacro File Resource Script Resource Tern plate SQL Script File 2 Text File,04J文件Mlc目录:G:TMPWM确定结東选择新建的单击“确定”在“新建”对话框中选中“文件”选项卡者“ C/C+ Header File ”项文件所属的工程(添加工程)选择存储位 置(目录)输入文件名 按钮输入文件内容。例如,新建的名为 M1.CPP的源文件内 容如下:选中其中的C+ Source File ”或/M1.C PP#in elude void mai n()cout ffpragna oncettendif / M
7、SC UER 1000;(:怙ss.JilFiiE谄JttendiF *defined(AFX_TDATE_H_9D) ijV所以,当建立了一个新类的框架之后,程序员应该为新建的类添加成员。操作步骤如下:在工作区窗口中选择ClassView ”选项卡 展开相应工程的类分支(工程名classes 双击类名(此时,保存类声明的头文件内容已经显示在编辑窗口中,如上图) 向类中添加成员声明。例如,我们在TDate类中添加三个 数据成员和两个成员函数。完成后的类 声明代码如下(加粗的是新增的语句):class TDateint month,day,year;public:TDate();virtual
8、TDate();void Set(int m=1,int d=1,int y=2000); void P rint();(3)为新建类的成员函数添加实现代码:向类中添加完成员声明之后,就应该编写成员函数的实现代码 了。具体操作步骤如下:在工作区窗口中选择FileView ”选项卡展开相应工程的源文件分支(工程名 files Source Files)相应源文件内容已经显示在编辑窗口中)双击类的实现代码的源文件名(此时, 编写成员函数的实现代码#include viostream.hTDate:TDate() month=1; day=1; year=2000; (4)在有关源文件中添加使用类的
9、语句: 至此,类的设计工作已经完成。 现在, 在有关源文件中就可以使用新建的类了。例如,我们要在 用类TDate,只要在 入相应的代码即可。下面是修改后的(加粗的是新增的语句Ml.cpp源文件中使Ml.cpp源文件中加Ml.cpp源文件内容 ):TDate:TDate() void TDate:Set(int m,int d,int y) month=m; day=d; year=y; void TDate: Print() cout vvmonth vv/ vvday / vvyear vvn;例如,我们为TDate类的4个成员函 数编写实现代码如下(加粗的是新增的语 句):#in elud
10、e #include TDate.hvoid mai n()cout Hello!n;TDate d;d.P rint(); d.Set(10,15,2003);d.P rint();5.工程中文件的管理 在工程中新建文件: 向工程中添加文件: 从工程中移出文件: 在工作区窗口中选择 键。(见 1.)(见 1.)“FileView ” 选项卡展开文件分支选中要移出的文件打“ Del”3.1一般性问题 .3.2头文件 3.3源文件的结构。3.4目录结构 命名和书写规范介绍 1.1 文档目的1.2 动机 一般性原则 文件结构 c+编程规范2009 年 5 月 25 日目录. 777. 8. 888
11、1010 . 1154.14.24.34.44.54.64.74.8标识符的命名规则 类函数成员变量指针和引用常量枚举变量全局变量表达式和基本语句5.15.25.35.45.55.6排版6.16.2运算符的优先级复合表达式语句循环语句的效率for 语句的循环控制变量 switch 语句if空格与对齐注释内存管理7.1 创建与销毁7.2 数组与指针1111121313131414.14141415161717.171720.2121221 介绍1.1文档目的本文档规定了 C+编程过程中的编码规范,本文档的目的是为了帮助本学院的学生,教师更好的完成程序设计任务。所有的程序作者都应该遵循此文档所规定
12、的编码规范。如果你对于文档中规范有不同的见解或更好的解决方案,在确保自己的解决方案经过充分的记录和测试的前提下,请及时通知本文的作者,以便对该文档相应的规则做出必要的更改。1.2动机为了对软件的开发进行适当的规范化,特制定本规范,其根本目的,是为了保证程序具有良好的、一致的结构,以期提高程序的可读性及可维护性,方便程序的测试、维护、升级等工作,同时,也培养学生书写代码的规范性。般性原则为了书写出清晰而易维护的代码,以下的一般性原则可以所有的情况下应用到重用性。软件工程师的一个目标就是通过重复使用代码来避免编写新的代码。因为重 新使用已有的代码可以降低成本、增加代码的可靠性并提高它们的一致性。可
13、维护性。一段风格良好的代码肯定具有很好的可读性。如果代码的维护者不明白你 所书写的代码的含义,那么代码的维护就会成为一件十分困难和耗时的工作,所以在 你编辑代码的时候,一定要时刻的考虑到你的代码别人是不是能够真正理解。模块化,封装和信息隐藏。如果一个模块的代码变的太长或者太复杂,一定要考虑你 的模块是不是需要重新组织一下,或者将一个模块分解成多个模块。不要对使用你代码用户抱有太多的幻想。要让代码保护自己不被错误使用。书写注释。注释可以帮助别人更好的理解你的代码,尽管这一条经常被软件开发人员 忽视,但是对于代码的作者,使用者或者维护人员来说,代码注释在提高代码地可读 性和可维护性方面是十分必要的
14、。保持代码风格的一致性,无论是在文件级别,模块级别,还是工程级别,请保持代码 风格的一致性。3 文件结构3.1 一般性问题禁止用空格和一切的非 ASCII字符作为文件名,而且以下字符也是不允许的& A + - $ % * ( ) | / ?;:,每一个文件名应该反映岀你在里面定义或者实现的模块。所有的目录名,文件名一律用小写字母书写。一个文件中只能定义或者实现一个类,唯一的例外是小型的帮助类或私有的内部类可以和 它的主类定义在同一个文件中。文件中不允许包含废弃不用的源代码。3.2头文件为了防止头文件被重复引用,应当用ifndef/defi ne/e ndif结构产生预处理块。用 #in elu
15、de file name不提倡使用全局变量,尽量不要在头文件中岀现象exter n int value这类声明。格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。用#山clude“ file name.h”格式来引用非标准库的头文件(编译器将从用户的工作目 录开始搜索)。将构造函数和析构函数声明在类的开头位置 将数据成员放在类的末尾 将从父类继承的函数放在不同的位置,并添加注释说明这些成员函数是从哪个类继承而来不要将类的内联函数的实现放到头文件中 头文件中只存放“声明”而不存放“定义”C+头文件的结构/ Copyright (c) 2009, Software College of H
16、ebei NormalUniversity/ FILENAME: file name.h/ DESCR IP TION:/ AUTHOR:/ DATE:/ Versio n:/#ifndef GRAPH ICS H /防止graphics.h 被重复引用#define GRAPH ICS H#in clude /引用标准库的头文件#include “ myheader.h ”/引用非标准库的头文件void Fun cti on1();/全局函数声明class Box/类结构声明;#en dif3.3源文件的结构。源文件的注释应该满足以下条件:书写注释,源文件的注释是为这个模块的维护者书写的,a
17、注释要描述所有类级别的实现,详细描述复杂的和容易产生歧义的实现部分b成员函数的作用,目的以及返回值和参数都需要添加必要的注释部分在同一个源文件中写一个类的实现部分全局函数和成员函数的定义需要保持和头文件中相同的顺序同函数的参数名要和头文件中保持一致C+源文件的结构/ 版权和版本声明见示例1-1,此处省略。#in clude“gra phics.h ”/引用头文件/全局函数的实现体void Fun cti on1()/类成员函数的实现体 void Box:Draw( )3.4目录结构如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存 于不同的目录,以便于维护。如果某些
18、头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。4 命名和书写规范4.1标识符的命名规则不允许使用汉语拼音命名,更不要使用汉语,尽量英文来命名标识符,因为计算机语言的 保留字都用英文命名,而且在国际化的组织中,英文一般作为主要的沟通语言。用描述性的文字来命名标识符,如果你不能为一个标识符命名,你一定要考虑这个标识符 是否还有存在的必要。尽量避免名字中岀现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。函数,类,结构的名字开头字母要大写 标识符的命名要清晰、明了,有明确含义,同时使用完整的
19、单词或大家基本可以理解的缩 写,避免使人产生误解。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成 NowValue o4.2类必须以大写开头,后面字母反映具体含义,例如:TStude nt, TPoint前面的T表示个新Type ” ,或者 CStudent, CPoint, C表示一个新”Class”;或者直接首字母大写 Student, Point;以清晰表达类的用途和功能为原则。接口类必须以大写I开头,代表In terface类的声明顺序严格按照存取描述符public, P rotectedprivate的顺序尽量的用class声明一个类,而不是 s
20、truct.将析构函数声明为虚函数 尽可能的为类提供一个默认构造函数用inline函数代替宏定义B继承A的功能和属性。如果类A和类B毫不相关,不可以为了使B的功能更多些而让若在逻辑上B是A的“一种” (a kind of ),则允许 B继承A的功能和属性。例如男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种。 那么类Man可以从类Human 派生,类Boy可以从类Man派生。若在逻辑上 A是B的“一部分” (a part of ),则不允许 B从A派生,而是要用 A和其它东西组合岀 Bo采用以函数为中心的版式,将public类型的函数写在前面,而将private 类型的数据
21、写在后面,采用这种版式的程序员主张类的设计“以行为为中心”,重点关注的是类应该 提供什么样的接口。以数据为中心版式以函数为中心的版式class Aclass Aprivate:public:int i, j;void Fun c1(void);float x, y;void Fun c2(void);public:private:int i, j;float x, y;void Fun c1(void);void Fun c2(void);4.3函数参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型
22、或顺序搞错。尽量不要使用类型和数目不确定的参数。函数参数最好以小写 a开头(例如:aPara),表示这个变量是参数(argument)变量,从而使参数和临时变量,成员变量分开例子:/ testclass.h:/ Test class descri ption./class CTestClass public:aNumber );aNumber )Tint MemberFunction( Tint/ testclass.c pp:/ I mpl ementation descri ption./Tint CTetrisClass:MemberFunction( Tint 如果参数是指针,且仅作输
23、入用,则应在类型前加con st ,以防止该指针在函数体内被意外修改。如果输入参数以值传递的方式传递对象,则宜改用“const&”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。不要省略返回值的类型。函数名字与返回值类型在语义上不可冲突。return不要将正常值和错误标志混在一起返回。正常值用输岀参数获得,而错误标志用语句返回。有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。在函数体的“入口处”,对参数的有效性进行检查。在函数体的“岀口处”,对 return语句的正确性和效率进行检查。4.4成员变量用m_开头来命名成员变量,例如:int mjntVa
24、lue;4.5指针和引用应当将修饰符*和&紧靠变量名示例:char *n ame;int *x, y; /此处y不会被误解为指针CTestClass *p oi nter;/ poin ter to CTestClassvoid Modify( Tint &aln teger );/ refere nee p arameter used4.6常量在C+程序中只使用con st常量而不使用宏常量,即eon st常量完全取代宏常量。常量定义 以大写字母K开头,代码中的字符,大于 0,小于-1的整型变量及其他非整型变量一律用常量定义例如:eon st int KMagicNumber = 100;c
25、onst stri ng KUserName =“ user name”;常量定义在源文件中,尽量避免在头文件中定义常量如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给岀一些孤立的值。例如:eon st float KRadius = 100;eon st float KDiameter = KRadius * 2;4.7枚举变量枚举变量定义应该包含在特定的类中 枚举和它的成员的定义,应该采用有意义的命名方式,避免岀现歧义 枚举变量的命名以 T开头,枚举成员以 E开头枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的Pl=3.14159 )o隐含数据
26、类型是整数,其最大值有限,且不能表示浮点数(如例子:class CTestClass enum TTestT ypeETestEumFist, ETestEumSecond,;4.8全局变量G开头尽量避免应用全局变量,如果有特殊情况必须定义的话,全局变量以大写5 表达式和基本语句5.1运算符的优先级一元运算符+ -的优先级高于对应的二元运算符。如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。例如:word = (high = b & c d & c + f = g + h ; /复合表达式过于复杂例如:不要有多用途的复合表达式。d = (a = b + c) +
27、r ;该表达式既求 a值又求d值。应该拆分为两个独立的语句:a = b + c;d = a + r;不要把程序中的复合表达式与真正的数学表达式”混淆。例如:if (a b c)/ a b c是数学表达式而不是程序表达式并不表示if (ab) & (bc)而是成了令人费解的if ( (ab)=”或“=-E PSINON) & (xv=E PSINON)其中EPSINON是允许的误差(即精度)。应当将指针变量用 “=”或“!=”与NULL比较。指针变量的零值是空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为P,它与零值比较的标准if语句如下:if (P = N
28、ULL) / p与NULL显式比较,强调 P是指针变量if (p != NULL)不要写成if (p = 0) /容易让人误解p是整型变量if (p != 0)或者if (p)/容易让人误解 p是布尔变量if (!p)5.4循环语句的效率在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。低效率:长循环在最外层高效率:长循环在最内层for (row=0; row100; row+)for (col=0; col5; col+ )for ( col=0;col5; col+ )for (row=0; row100; row+)sum = su
29、m + arowcol;sum = sum + arowcol;如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。效率低但程序简洁效率高但程序不简洁for (i=0; iN; i+)if (con diti on)if (con diti on)for (i=0; iN; i+)DoSometh in g();DoSometh in g();elseDoOtherthi ng();elsefor (i=0; i80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分岀的新行要进行适当的缩进,使排版整齐,语句可读。示例:if (very_l
30、o nger_variable1 = very_ lon ger_variable12)& (very_ Ion ger_variable3 = very_ Ion ger_variable14)& (very_lo nger_variable5 = very_lo nger_variable16)dosomethi ng();virtual CMatrix CMult ip lyMatrix (CMatrix leftMatrix,CMatrix rightMatrix);for (very_ Ion ger_i nitializatio n;very_ Ion ger_c on diti
31、on;very_lo nger_u pdate)dosomethi ngO;不允许把多个短语句写在一行中,即一行只写一条语句;if、for 、while 、do 等语句自占一行,执行语句不得紧跟其后。示例:风格良好的代码行风格不良的代码行int width;/宽度int height;/高度int dep th;/深度int width, height, de pth; /宽度高度深度x = a + b; y = c + d; z = e + f;x = a + b; y = c + d; z = e + f;if (width height) dosometh in g();if (widt
32、h height) dosometh in g();for (i nitializati on; con diti on; up date) dosometh in g();/ 空行other();for (i nitializati on; con diti on; up date)dosometh in g();other();对齐只使用空格键,不使用TAB键。说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐。case函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,语句下的情况处理语句也要遵从语句缩进要求。尽可能在定义变量的同时初始化该变量(就近原则)示例:int width = 10;/定义并初绐化widthint height = 10;/定义并初绐化heightint depth = 10;/定义并初绐化depth时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if 、 for 、 do、while 、 switch、case语句中的程序都要采用如上的缩进方式。示例:风
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论