版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1C+BuilderC+Builder工程的基本结构工程的基本结构一、工程一、工程 1.1 1.1 工程概念工程概念 工程是为了实现特定功能所需的文件工程是为了实现特定功能所需的文件集合。集合。 这个集合是一个特殊的文件夹,由工程这个集合是一个特殊的文件夹,由工程文件进行描述和管理。文件进行描述和管理。2 21.2 工程的要素工程的要素窗体单元资源选项C+BuilderC+Builder工程的基本结构工程的基本结构3 3C+BuilderC+Builder工程的基本结构工程的基本结构1.3 项目的项目的主要文件主要文件工程描述文件(*.bpr)窗体文件窗体文件(*.dfm)单元文件(*.c
2、pp)资源文件资源文件(*.res)工程代码文件(*.cpp)4 4主要文件 简介工程描述文件 (.bpr)新建工程时由系统自动创建单元文件 (.cpp)一个窗体有一个单元。单元文件可以没有窗体,用以保存公共元素。窗体文件 (.dfm)用于记录窗体及窗体上控件的基本信息资源文件 (.res)保存图标、位图等信息工程代码文件 (*.cpp)新建工程时由系统自动创建头文件(*.h),类定义文件5 5q 1.3.1 1.3.1 工程描述文件工程描述文件 工程描述文件的作用:用于描述宏定义,编译选项,工程描述文件的作用:用于描述宏定义,编译选项,连接选项,文件清单等。结构如下:连接选项,文件清单等。结
3、构如下: . . C+Builder工程的基本结构C+BuilderC+Builder工程的基本结构工程的基本结构 . . . . /FILELIST /FILELIST . .6 67 7q 1.3.2 1.3.2 工程代码文件工程代码文件 整个工程的总入口,用于初始化工程,创建窗体,整个工程的总入口,用于初始化工程,创建窗体,启动工程。示例代码如下:启动工程。示例代码如下:#include #include #pragma hdrstop#pragma hdrstop USEFORM(Unit1.cpp, Form1); USEFORM(Unit1.cpp, Form1); WINAPI
4、WinMain(HINSTANCE, HINSTANCE, LPSTR, int) WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) C+Builder工程的基本结构C+BuilderC+Builder工程的基本结构工程的基本结构 try try Application-Initialize(); Application-Initialize(); Application-CreateForm(_classid(TForm1), Application-CreateForm(_classid(TForm1), &Form1); &
5、Form1); Application-Run(); Application-Run(); catch (Exception &exception) catch (Exception &exception) Application-ShowException(&exception); Application-ShowException(&exception); 8 8C+BuilderC+Builder工程的基本结构工程的基本结构 catch (.) catch (.) try try throw Exception(); throw Exception();
6、catch (Exception &exception) catch (Exception &exception) Application-ShowException(&exception); Application-ShowException(&exception); return 0; return 0; 9 91010q 1.1.3.3 3.3 单元文件单元文件 (. (.cpp)cpp) 为窗体类的实现文件,其中有窗体的构造方法,和窗为窗体类的实现文件,其中有窗体的构造方法,和窗体上各个控件的事件响应方法。代码如下:体上各个控件的事件响应方法。代码如下:
7、#include #include #pragma hdrstop#pragma hdrstop#include Unit1.h#include Unit1.h#include Stdio.h#include Stdio.h#include iostream.h“#include iostream.h“#pragma package(smart_init)#pragma package(smart_init)#pragma resource #pragma resource * *.dfm.dfmTForm1 TForm1 * *Form1;Form1;C+Builder工程的基本结构C+Bu
8、ilderC+Builder工程的基本结构工程的基本结构_fastcall TForm1:TForm1(TComponent_fastcall TForm1:TForm1(TComponent* * Owner) Owner) : TForm(Owner) : TForm(Owner) void _fastcall TForm1:Button1Click(TObject void _fastcall TForm1:Button1Click(TObject * *Sender)Sender) 11111212n1.31.3.4 .4 窗体文件窗体文件(.(.dfm)dfm) 窗体文件用于定义窗体
9、,及窗体上组件的属性。窗体文件用于定义窗体,及窗体上组件的属性。1.1.查看窗体代码的操作查看窗体代码的操作 在窗体上单击鼠标右键,在弹出菜单中选择在窗体上单击鼠标右键,在弹出菜单中选择 View View as Textas Text,即可看到窗体文件的内容。即可看到窗体文件的内容。2.2.从窗体代码窗口返回窗体窗口的操作从窗体代码窗口返回窗体窗口的操作 在窗体代码窗口上单击鼠标右键,在弹出菜单中选在窗体代码窗口上单击鼠标右键,在弹出菜单中选择择 View as FormView as Form。 C+Builder工程的基本结构1313object Form1: TForm1object
10、Form1: TForm1 Left = 234 Left = 234 Top = 124 Top = 124 Width = 696 Width = 696 Height = 480 Height = 480 object Button1: TButton object Button1: TButton Left = 32 Left = 32 Top = 400 Top = 400 OnClick = Button1Click OnClick = Button1Click end endendendC+Builder工程的基本结构1414 1.3.6 1.3.6 头文件(头文件(* *.h)
11、.h) 头文件用来声明类。代码示例如下:头文件用来声明类。代码示例如下:#ifndef Unit1H#ifndef Unit1H#define Unit1H#define Unit1H#include #include #include #include #include #include #include #include #include #include C+Builder工程的基本结构class TForm1 : public TFormclass TForm1 : public TForm_published:/ IDE-managed Components_published:/
12、IDE-managed Components TButton TButton * *Button1;Button1; TLabel TLabel * *Label1;Label1; TMainMenu TMainMenu * *MainMenu1;MainMenu1;private:/ User declarationsprivate:/ User declarationspublic:/ User declarationspublic:/ User declarations _fastcall TForm1(TComponent _fastcall TForm1(TComponent* *
13、Owner); Owner);extern PACKAGE TForm1 extern PACKAGE TForm1 * *Form1;Form1;#endif#endif1515 二、工程需要保存的文件二、工程需要保存的文件* *.bpr.bpr* *.cpp.cpp* *.dfm.dfm* *.res.res* *.h.h小练习:小练习: 新建一个项目,编译运行,关闭项目,然后到项目新建一个项目,编译运行,关闭项目,然后到项目文件夹下,删除上述文件类型之外的文件,然后打开项文件夹下,删除上述文件类型之外的文件,然后打开项目,看看能否从新编译运行。目,看看能否从新编译运行。1616C+Bui
14、lderC+Builder工程的基本结构工程的基本结构#pragma #pragma 预处理指令详解预处理指令详解 一、主要功能一、主要功能 对每个编译器给出了一方法对每个编译器给出了一方法, ,在保持与在保持与C C和和C+C+语言完语言完全兼容的情况下全兼容的情况下, ,给出主机或操作系统专有的特征。给出主机或操作系统专有的特征。 编译指示是机器或操作系统专有的编译指示是机器或操作系统专有的, ,且对于每个编译且对于每个编译器都是不同的。器都是不同的。 二、命令格式二、命令格式 #pragma para #pragma para其中:其中:parapara为命令参数。为命令参数。1717#
15、pragma #pragma 预处理指令详解预处理指令详解 三、常见参数和意义三、常见参数和意义l 3.1 message3.1 message 在编译信息输出窗口中输出相应的信息,这对于源代在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:码信息的控制是非常重要的。其使用方法为: #pragma message(#pragma message(消息文本消息文本) ) 当编译器遇到这条指令时就在编译输出窗口中将消当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。息文本打印出来。 如果在程序中定义了许多宏,用于控制源代码版本如果在程序中定义了许多宏,
16、用于控制源代码版本,则有可能会忘记有没有正确的设置这些宏,此时可以,则有可能会忘记有没有正确的设置这些宏,此时可以用这条指令在编译的时候就进行检查。用这条指令在编译的时候就进行检查。1818#pragma #pragma 预处理指令详解预处理指令详解假设希望判断有没有在源代码的什么地方定义了假设希望判断有没有在源代码的什么地方定义了_X86_X86这这个宏个宏, ,可以用下面的方法可以用下面的方法: : #ifdef _X86 #ifdef _X86 #pragma message(_X86 macro activated!) #pragma message(_X86 macro activa
17、ted!) #endif #endif 定义了定义了_X86_X86这个宏以后,应用程序在编译时就会在这个宏以后,应用程序在编译时就会在编译输出窗口里显示编译输出窗口里显示_86 macro activated!_86 macro activated!。就会。就会知道有没有定义一些特定的宏了知道有没有定义一些特定的宏了。1919#pragma #pragma 预处理指令详解预处理指令详解l 3.2code_seg3.2code_seg 格式:格式: #pragma code_seg( section-name , #pragma code_seg( section-name , section
18、-class ) section-class ) 它能够设置程序中函数代码存放的代码段,当开发驱它能够设置程序中函数代码存放的代码段,当开发驱动程序的时候就会使用到它。动程序的时候就会使用到它。 2020#pragma #pragma 预处理指令详解预处理指令详解l 3.3 once 3.3 once 只要在头文件的最开始加入这条指令就能够保证头只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在文件被编译一次,这条指令实际上在VC6VC6中就已经有了,中就已经有了,但是考虑到兼容性并没有太多的使用它。但是考虑到兼容性并没有太多的使用它。2121#pragma #pra
19、gma 预处理指令详解预处理指令详解l 3.4 hdrstop3.4 hdrstop 表示预编译头文件到此为止,后面的头文件不进行表示预编译头文件到此为止,后面的头文件不进行预编译。预编译。BCBBCB可以预编译头文件以加快链接的速度,但如可以预编译头文件以加快链接的速度,但如果所有头文件都进行预编译又可能占太多磁盘空间,所果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文件。有时单元之间有依赖以使用这个选项排除一些头文件。有时单元之间有依赖关系,比如单元关系,比如单元 A A 依赖单元依赖单元 B B,所以单元,所以单元 B B 要先于单要先于单元元 A A 编译。编
20、译。 可以用可以用#pragma startup #pragma startup 指定编译优先级,如果使指定编译优先级,如果使用了用了#pragma package(smart_init)#pragma package(smart_init),BCBBCB就会根据优先就会根据优先级的大小先后编译。级的大小先后编译。 2222#pragma #pragma 预处理指令详解预处理指令详解l 3.5 resource 3.5 resource * *.dfm.dfm 表示把表示把* *.dfm.dfm文件中的资源加入工程。文件中的资源加入工程。* *.dfm.dfm中包括窗中包括窗体外观的定义。体外
21、观的定义。l 3.6 warning( disable: 4507 34; once: 4385; 3.6 warning( disable: 4507 34; once: 4385; error: 164 )error: 164 ) 不显示不显示45074507和和3434号警告信息号警告信息 ,43854385号警告信息仅报号警告信息仅报告一次,把告一次,把164164号警告信息作为一个错误。号警告信息作为一个错误。 pragma warning pragma warning 支持的其它下格式:支持的其它下格式: 2323#pragma #pragma 预处理指令详解预处理指令详解 #pr
22、agma warning( push )#pragma warning( push )保存所有警告信息的现保存所有警告信息的现有的警告状态。有的警告状态。 #pragma warning( push, n )#pragma warning( push, n )保存所有警告信息的保存所有警告信息的现有的警告状态,并且把全局警告等级设定为现有的警告状态,并且把全局警告等级设定为n(1-4)n(1-4)。 #pragma warning( pop )#pragma warning( pop )从栈中弹出最后一个警告从栈中弹出最后一个警告信息,在入栈和出栈之间所作的一切改动取消。信息,在入栈和出栈之间
23、所作的一切改动取消。2424#pragma #pragma 预处理指令详解预处理指令详解l 3.7 comment(.) 3.7 comment(.) 该指令将一个注释记录放入一个对象文件或可执行文该指令将一个注释记录放入一个对象文件或可执行文件中。件中。 常用的常用的liblib关键字,可以帮我们连入一个库文件。如:关键字,可以帮我们连入一个库文件。如: #pragma comment(lib, comctl32.lib)#pragma comment(lib, comctl32.lib) #pragma comment(lib, vfw32.lib) #pragma comment(lib
24、, vfw32.lib) #pragma comment(lib, wsock32.lib) #pragma comment(lib, wsock32.lib)2525#pragma #pragma 预处理指令详解预处理指令详解l 3.8 #pragma loop_opt(on|off)3.8 #pragma loop_opt(on|off) 激活循环激活循环| |终止循环优化功能。终止循环优化功能。l 3.9 #pragma warn +100 |-1003.9 #pragma warn +100 |-100 启用或者禁止:启用或者禁止:“变量已定义但未使用的变量已定义但未使用的”警告信息。
25、警告信息。 2626#pragma #pragma 预处理指令详解预处理指令详解2727#pragma #pragma 预处理指令详解预处理指令详解内存对齐问题内存对齐问题 计算机系统对基本类型数据在内存中存放的位置有计算机系统对基本类型数据在内存中存放的位置有限制,要求这些数据的首地址的值是某个数限制,要求这些数据的首地址的值是某个数 k(k(通常它为通常它为4 4或或8)8)的倍数,这就是内存对齐,而这个的倍数,这就是内存对齐,而这个 k k 则被称为该则被称为该数据类型的对齐模数数据类型的对齐模数(alignment modulus)(alignment modulus)。 Win32W
26、in32平台下的微软平台下的微软 C C 编译器编译器(cl.exe for 80 x86)(cl.exe for 80 x86)在默认情况下采用如下的对齐规则在默认情况下采用如下的对齐规则: : 任何基本数据类型任何基本数据类型 T T 的对齐模数就是的对齐模数就是T T的大小,即的大小,即sizeof(T)sizeof(T)。比如对于。比如对于doubledouble类型类型(8(8字节字节) ),就要求该类,就要求该类型数据的地址总是型数据的地址总是8 8的倍数。的倍数。2828#pragma #pragma 预处理指令详解预处理指令详解 LinuxLinux下的下的GCCGCC的规则是
27、:任何的规则是:任何2 2字节大小的数据类字节大小的数据类的对齐模数是的对齐模数是2 2,而其它所有超过,而其它所有超过2 2字节的数据类型都以字节的数据类型都以4 4为对齐模数。为对齐模数。 ANSI CANSI C规定一种结构类型的大小是它所有字段的大规定一种结构类型的大小是它所有字段的大小以及字段之间或字段尾部的填充区大小之和。小以及字段之间或字段尾部的填充区大小之和。 填充区就是为了使结构体字段满足内存对齐要求而填充区就是为了使结构体字段满足内存对齐要求而额外分配给结构体的空间。额外分配给结构体的空间。 ANSI C ANSI C标准规定结构体类型的对齐要求不能比它所标准规定结构体类型
28、的对齐要求不能比它所有字段中要求最严格的那个宽松,可以更严格。有字段中要求最严格的那个宽松,可以更严格。2929#pragma #pragma 预处理指令详解预处理指令详解如何使用如何使用c/c+c/c+中的对齐选项中的对齐选项 vc6vc6中的编译选项有中的编译选项有 /Zp1|2|4|8|16 /Zp1|2|4|8|16 ,/Zp1/Zp1表示表示以以1 1字节边界对齐,相应的,字节边界对齐,相应的,/Zpn/Zpn表示以表示以n n字节边界对齐字节边界对齐 n n字节边界对齐的意思是说,一个成员的地址必须安字节边界对齐的意思是说,一个成员的地址必须安排在成员的尺寸的整数倍地址上或者是排在
29、成员的尺寸的整数倍地址上或者是n n的整数倍地址上的整数倍地址上,取它们中的最小值。,取它们中的最小值。也就是:也就是: min (sizeof( member),n)min (sizeof( member),n)3030#pragma #pragma 预处理指令详解预处理指令详解l 3.10 #pragma pack( n )3.10 #pragma pack( n ),(n:1,2,4,8,16)(n:1,2,4,8,16) 指定结构和联合成员的紧凑对齐。而一个完整的转指定结构和联合成员的紧凑对齐。而一个完整的转换单元的结构和联合的紧凑对齐由换单元的结构和联合的紧凑对齐由/Zp /Zp 选
30、项设置。紧凑选项设置。紧凑对齐用对齐用packpack编译指示在数据说明层设置。该编译指示在编译指示在数据说明层设置。该编译指示在其出现后的第一个结构或联合说明处生效。其出现后的第一个结构或联合说明处生效。 该编译指示对定义无效。该编译指示对定义无效。 第一个结构成员之后的每个结构成员都被存储在更第一个结构成员之后的每个结构成员都被存储在更小的成员类型或小的成员类型或 n n 字节界限内。字节界限内。 如果你使用无参量的如果你使用无参量的#pragma pack, #pragma pack, 结构成员被紧结构成员被紧凑为以凑为以/Zp /Zp 指定的值。该缺省指定的值。该缺省/Zp /Zp 紧
31、凑值为紧凑值为 /Zp8 /Zp8 。3131#pragma #pragma 预处理指令详解预处理指令详解l 3.113.11 #pragma pack( push|pop ,identifier, #pragma pack( push|pop ,identifier, n)n) 若不同的组件使用若不同的组件使用packpack编译指示指定不同的紧凑对编译指示指定不同的紧凑对齐齐, , 这个语法允许你把程序组件组合为一个单独的转换这个语法允许你把程序组件组合为一个单独的转换单元。单元。 带带pushpush参量的参量的packpack编译指示的每次出现将当前的紧编译指示的每次出现将当前的紧凑对齐存储到一个内部编译器堆栈中。凑对齐存储到一个内部编译器堆栈中。 编译指示的参量表从左到右读取。如果你使用编译指示的参量表从左到右读取。如果你使用push, push, 则当前紧凑值被存储起来则当前紧凑值被存储起来; ; 值是一样的。值是一样的。3232#pragma #pragma 预处理指令详解预处理指令详解如果你给出一个如果你给出一个n n 的值的值, , 该值将成为新的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47551-2026塑料有害物质限量要求多溴联苯和多溴二苯醚
- 土方路基检查记录表(加筋土工材料)
- 项目部安全资金投入计划月度报表
- 项目经理就餐记录
- 《老年服务伦理与礼仪》全套课件 项目1-9:老年服务伦理认知 -老年服务场合礼仪实践
- (辅导班)2026年新高三数学暑假讲义(基础班)第14讲 导数的概念与运算(解析版)
- 2025-2026学年浙江省台州市高三第一次模拟考试语文试卷含解析
- 【2026】年公务员考试山西省申论巩固难点解析
- 【2025】荆州市松滋市定向招聘大学生村级后备干部考试真题
- 26年基础护理师资培训课件
- 锚杆安全教育试题库及答案解析
- 健身房管理系统的设计与实现
- 2025四季度重庆云阳县遴选事业单位11人笔试考试备考题库及答案解析
- 农机赔偿协议书模板
- 使用决策树算法预测手机价格
- 同仁医院院史陈列馆设计方案
- 2024哈尔滨南岗区中小学教师招聘考试真题及答案
- 住院患者发放口服药流程
- 储能电站项目施工方案
- 工厂车间生产计划管理办法
- 西藏介绍课件
评论
0/150
提交评论