Embedded 版 (精华区)
发信人: snows (花自飘零水自流), 信区: Embedded
标 题: Wince编程经验12(ZZ)
发信站: 哈工大紫丁香 (2004年03月14日09:30:08 星期天), 站内信件
1. Windows CE .NET 4.0/4.1的特性
Microsoft Windows CE .NET 是Windows CE .NET 3.0 的后续版本,用来建造下一代智
能移动和小内存的设备。Windows CE.NET是一个组件化、模块化的实时多任务操作系统
。与Windows CE 3.0相比,Windows CE .NET 中新增和改进许多特性,例如蓝牙(Bluet
ooth)、802.11 和最新的互联网协议 (IPv6);新的文件阅读器;设备仿真,该特性使您
可以对完整的设备环境进行仿真而无需任何额外的硬件投资;平台向导,使您可以从众
多的预置设备设计中进行选择,以便跳跃式地开始您的开发流程;此外,还有丰富的多
媒体和Web浏览功能,例如Microsoft Internet Explorer 5.5 和Windows Media?编解码
器(Codec)和控件。您可以在以下部分了解到这些新增特性和增添特性。
移动
无线服务
以下是Windows CE .NET中对各种无线设备的增强支持:
蓝牙(Bluetooth):蓝牙是一种新兴的无线通讯技术,它允许设备在大约10米的范围之
内,互相之间进行通信。这种技术的主要目标是使设备无需物理电缆即可通信。使用这
种技术的一些主要设备包括无线耳机、调制解调器和打印机。Windows CE .NET对蓝牙技
术具有与生俱来的支持,它允许设备使用具有蓝牙功能的移动电话(例如数据调制解调
器)交换文件和对象,以及使用具有蓝牙功能的局域网(LAN)访问点提供网络连接。
对象交换(Object Exchange,OBEX)协议:对象交换(OBEX)是一种高效、简洁的二进
制协议,它使各种设备以一种简单、高效的方式自然交换数据。在Windows CE .NET中,
该特性可以在蓝牙(Bluetooth)和红外数据协会(IrDA)协议之上工作。
MediaSense:MediaSense特性通过向应用程序通知网络状态,从而改善了移动设备用户
的漫游体验。例如,它会通知应用程序嵌入设备是否处于范围之内。它还为用户提供了
一个离线模式。
802.1x/ Zero Configuration(零配置):Windows CE .NET引入了802.11 Zero Confi
guration(零配置)、802.1x以及 可扩展身份验证协议(Extensible Authentication
Protocol,EAP)。802.11 Zero Configuration简化了802.11网络的安装,并且使得从
一个802.11网络到另一个801.1x网络的无缝漫游成为可能。而EAP则通过在用户登录到网
络上时启用用户名/口令、证书或者针对特定原始设备生产商(OEM)的身份验证显著增
强了802.11的安全性。
开放的通信平台
支持领先的网络技术:
轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP):LDAP v 3.
0是一种用来访问Microsoft Active Directory(活动目录)的协议,Active Director
y中存储了姓名、地址、电话号码以及其它类型的信息。
远程访问服务(Remote Access Service,RAS)服务器:Windows CE .NET支持将基于W
indows CE的设备用作一台RAS服务器,并且允许客户端使用广域网(WAN)连接到基于W
indows CE的设备上。
网络驱动程序接口规范(Network Driver Interface Specification,NDIS)5.1:Win
dows CE .NET引入了对NDIS的支持,NDIS通过将硬件层和协议层抽象化,简化了驱动程
序的开发。NDIS 支持以太网(802.3)、IrDA、WAN以及令牌环网(802.5)微端口。Wi
ndows CE .NET全面支持中间驱动程序、电池状态、直接内存存取(DMA)以及发送取消
。
TCP/IP:Windows CE .NET包括一个基于标准的TCP/IP栈,允许使用Windows CE的设备被
用作局域网或远程网络上的节点和服务器。Windows CE .NET还包括对TCP/IP的安全性和
稳定性增强。
Winsock 2.0:Windows Sockets(Winsock)是一个接口,可以使用它来发现和使用底层
传输协议的通信能力。通过提供一个独立于协议的接口,Winsock完全支持新兴的网络技
术,例如实时多媒体通信。
网络桥接:网络桥接(Network Bridging)通过将帧从一个以太网段转发到另一个网段
,可以将多个以太网段连接到一个单一的子网之中。Windows CE .NET包含了所有必需的
组件,以在一个平台中支持网络桥接。
通用即插即用(Universal Plug and Play,UPP)Device Host and Control Point:U
PP Device Host(UPP设备托管)增强了个人计算机的端对端网络连通性、无线设备和网
络上的其它智能设备。Device Host API允许您创建可以向其它UPP设备发布自己的存在
和功能的设备。UPnP Control Point提供的API使Windows CE设备可以发现并且控制网络
上其它具有UpnP功能的设备。
远程管理
你可使用下面的组件远程认证、授权、管理和更新设备上的应用程序和操作系统服务:
SMS 2003 客户端: 新的SMS 2003客户端能使我们通过企业级的SMS 2003环境得到或操作
硬件和软件的配置运行状况等信息。目前企业级的SMS 2003正在开发中。
实时Internet协议(IP)通信支持
实时协作和通信:实时通信(RTC)使任意两个IP设备间的消息传递、出席会议和音频(
VoIP)。RTC是基于单一内联协议(Single Inline Protocol,SIP)的,该协议是一种
Internet工程任务组(Internet Engineering Task Force,IETF)标准。SIP/RTC框架
使Windows Messenger的出现成为可能。
无缝的Windows集成
远程桌面协议(Remote Desktop Protocol,RDP):RDP允许瘦客户机--例如基于Windo
ws的终端--跨越LAN和WAN,或者借助于拨号连接、ISDN、DSL或者VPN连接同一台终端服
务器进行通信。5.1版本的RDP客户机包括对高彩分辨率、本地打印机和本地音频回放的
支持。
健壮
系统级的可靠性
改进的可靠性:为了提供企业级的可靠性、简洁的线程管理、伸缩自如的数据库容量、
高优先级的线程清除预防以及独一无二的设备ID都已经内建在Windows CE .NET操作系统
之中。
小内存体积占用
最小化的操作系统体积:通过不断努力缩小嵌入系统最小化操作系统的体积,可以对Wi
ndows CE .NET中的丰富功能进行粒度级的组件化。 最小配置的Windows CE .NET可以小
至200KB,它只带有最小的内核功能。
广泛的CPU选择
Windows CE .NET支持四种微处理器家族以及仿真技术。
ARM:支持的处理器包括ARM720T、ARM920T、ARM1020T、StrongARM、XScale
MIPS:支持的处理器包括MIPS II/32 with FP、MIPS II/32 without FP、MIPS16、MIP
S IV/64 with FP、MIPS IV/64 without FP
SHx:支持的处理器包括SH-3、SH-3 DSP、SH-4
X86:支持的处理器包括486、586、Geode、Pentium I/II/III/IV
支持CPU类型见:
http://www.microsoft.com/windows/Embedded/ce.NET/evaluation/hardware/process
ors.asp
企业范围的安全性
网络安全性增强:
Kerberos安全协议:Kerberos身份验证协议在建立安全的网络连接前,为实体间的相互
身份验证提供了一个安全的网络连接,并且具有以下优点:
高效的服务器身份验证:应用程序服务器不需要连接到域控制器上对每个客户的身份进
行验证,因为客户出示的凭证提供了相应的身份验证信息。
相互身份验证:客户机和服务器都可以互相验证彼此的身份。
互操作性:根据标准制定的规范是基于IETF的,它实现了同其它网络的互操作性。Kerb
eros是运行Windows 2000 Server及其后续版本操作系统的服务器使用的身份验证协议。
Web服务器的安全套接字层(Secure Sockets Layer,SSL)支持:SSL支持已经被添加到
Web服务器中,以允许Web服务器和Web客户机使用加密技术安全进行通信。
受保护的存储:为了保护敏感信息或者防止信息被篡改,受保护存储的API为密码系统和
用户体验问题提供了一个方便的解决方案。
智能卡加密服务提供者(Smart Card Cryptographic Service Provider,CSP):Wind
ows CE .NET的智能卡子系统通过智能卡CSP对CryptoAPI提供支持。这些服务提供者是一
些可以访问特定服务的动态链接库(DLL)。
扩展设备驱动程序支持
Windows CE .NET中对新的设备驱动程序的支持包括:
高级技术附加数据包接口(Advanced technology Attachment Packet Interface,ATA
PI)磁盘驱动程序:这个全面的功能性驱动程序提供了CD和DVD的"读"支持。
IEEE 1394: 使用SBP-2和61883 传输协议,IEEE 1394 软件全面支持存储和 AV/C 设备
。
USB 1.1: 全功能的 USB软件支持HID,打印机,块存储设备以及RNDIS Ethernet类设备
。
新的统一音频模型和示例驱动程序:UAM实现了对WAV和Microsoft DirectSound?音频AP
I的高效支持。它还使得编写一个能有效支持WAV和DirectSound的驱动程序成为可能。
可安装的ISR:这个省时特性允许中断被多个设备共享。可安装的ISR扩展了处理ISR和I
ST中设备的能力,并且可以通过高级语言编程对其加以使用。
输入/输出(I/O)资源管理器:一个调用设备的驱动程序可以通过指出是否是一个给定
的资源(例如地址或者IRQ)来管理系统中的所有I/O资源。您可以通过使用设备驱动程
序中的资源管理器(Resource Manager)服务来避免平台中的I/O资源发生冲突。
设备通知:设备驱动程序和应用程序可以在设备通知系统中注册,以便在感兴趣的设备
出现或消失时获得通知。
电源管理器: 管理系统和设备级的电源状态。驱动程序向电源管理器注册和报告它们的
容量,基于用户定义的状态(如正常运行,挂起,关闭等),允许应用程序关闭和打开该
设备。由系统状态来判断什么设备在供电状态,并且处于五个支持的设备状态(Full-On
, Low-On, Standby, Sleep, Off)的什么程度。
智能
NET设备服务
Windows CE .NET使开发人员可以创建智能设备并且参与到XML Web服务的新世界中去:
XML:可扩展标记语言(Extensible Markup Language,XML)是Web数据的通用格式。X
ML允许开发人员以一种标准、一致的方式从任何应用程序中轻松描述和提供丰富的结构
化数据。XML不会代替HTML;相反,它是对HTML的有益补充。
SOAP:SOAP是一种在分散的分布式环境中进行信息交换所使用的轻量级协议。它是一种
基于XML的协议,由三个部分组成:对消息内容和如何处理消息进行了框架定义的信封;
面向应用程序所定义数据类型的表达实例的一组编码规则;以及表示远程过程调用和响
应的约定。
.NET Compact Framework
.NET Compact Framework是.NET Framework的一个子集,专门面向小内存体积占用的设
备而设计。.NET Compact Framework是一个面向安全、可下载应用程序的独立于硬件的
程序执行环境,定位于资源有限的计算设备,并且专门为这些设备进行了优化。.NET C
ompact Framework提供了多种语言可供选择(在最初,有Microsoft Visual Basic? 和
Microsoft Visual C#?),并且消除了语言互操作性所面临的一些常见问题。例如,Vi
sual C# 和Visual Basic组件可以轻松混合到一个解决方案之中,从而使更多的开发人
员可以更轻易地参与到一个解决方案之中。.NET Compact Framework所支持的每种语言
都可以平等地访问底层的框架和操作系统特性。.NET Compact Framework还包括了对We
b服务的支持,这些服务使开发人员可以在小型、短时连接设备上对网络传输的粒度进行
更细致的控制,允许后台的数据预取,并且使应用程序可以汇集来自不同的服务器的数
据。.NET Compact Framework支持所有被Windows CE .NET支持的处理器。
自适应的用户界面和增强
自定义的和个性化的用户界面方面的增强:
可自定义的用户界面(UI):允许对常用控件和其它用户界面元素的外观进行自定义。
用户配置文件:使OEM可以在一个设备上存储多个特定于用户的设置。
多屏幕支持:支持将多个屏幕连接到基于Windows CE的设备上,在组合使用时,就像一
个大屏幕一样。
Microsoft ClearType支持:提供了对ClearType字体的支持。
字体加载目录:您可以指定操作系统从哪个目录加载字体。例如,您现在可以将字体保
存在Flash上。
丰富的多媒体支持
支持最新的多媒体体验,包括Microsoft DirectX API和Windows Media 8编解码器和控
件:
Microsoft Direct3D API:通过允许对3D视频显示硬件以设备无关的方式进行设备有关
的访问,对3D互动图形程序提供支持。
DVD视频API:允许应用程序同DVD解码硬件进行交互。DVD视频API接口具有同独立的消费
类DVD播放器相同的功能。
Microsoft DirectMusic API:支持通过硬件播放基于消息的音乐数据。
DirectX:Windows CE .NET支持所有微处理器、DVD导航和回放、Direct 3D API和参考
光栅(仅限于支持浮点的CPU)。
Windows Media 8 编解码器和控件:支持最新的Windows Media 8 Codec(编解码器)和
Controls(控件),可以对最新的高保真、低带宽编码多媒体流提供支持。
数字版权管理V 7:DRM 7 允许版权所有者对ASF(Advanced Streaming format)格式的
内容进行加密和管理,并使这些经过加密的音频和视频ASF文件的播放成为可能。
最新的Web浏览技术
Internet Explorer 5.5 for CE:支持Internet Explorer 5.5的功能。
广泛的全球性支持
Windows CE .NET 基于Unicode而且具有广泛的本地化和语言支持,这使得嵌入系统的开
发人员可以针对特定市场量身定做相应的产品。Windows CE .NET已经使用了多种语言进
行了本地化,其中包括了对以下语言的增强支持:
Agfa字体压缩:支持Agfa AC3字体压缩和解压技术,这些技术减少了东亚字体文件所占
用的ROM体积。
多语言用户界面(Multilingual User Interface,MUI):用户可以切换用户界面语言
,而且使用一个单一的ROM映像就可满足多个市场的要求。
中文操作系统和应用程序支持:面向简体中文和繁体中文的完全的操作系统和应用程序
本地化支持。
面向简繁体中文的输入法编辑器(Input Method Editors,IME):带有简单用户界面并
且同时面向简繁体中文的Pocket IME,以及为Windows CE提供的Microsoft 拼音输入法
2.0。
日语Pocket IME 2.0:内核和用户界面的分离实现了更大程度的定制化。新增特性包括
字典编译器、用户字典、字词注册、多字典支持、新的注册表设置以及更广泛的输入法
支持。
韩语操作系统和应用程序支持:操作系统和应用程序已经针对韩语进行了本地化。韩语
输入法内核和用户界面代码也已经进行了分离,以便进行进一步的定制。
手写识别引擎(Handwriting Recognizer Engine,HWX)和示例用户界面:为多种语言
提供了手写识别引擎,包括繁体中文和韩语(Hangul和Hanja)。
转换器应用程序(Transcriber Application):为美国英语、德语和法语提供的手写识
别的端到端解决方案。
更方便的Windows集成
文件阅读器:Windows CE .NET 4.1包含了一套浏览最常用文档格式的文件阅读器,其包
括 Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Adobe Acrobat 以及
打开.jpeg图像格式的阅读器。有这些文件阅读器,我们在CE设备上即可浏览这些文档,
而不需要通过ActiveSync?传到桌面系统来同步阅读。
即时信使通知:即时消息客户端可以使用户使用语音或者视频同朋友进行交流,并且可
以非常容易地同其它人通过共享文件、应用程序或者电子白板进行协作。
Microsoft Passport身份验证:同.NET Passport进行交互。这个在线的用户身份验证客
户端使用户可以使用单一的注册名和口令,轻松和安全地访问所有支持.NET Passport的
Web站点和服务。.NET Passport将开发人员从构建专有的用户身份验证系统中解放出来
,并使他们能将精力集中在为站点设计增值特性上。
快捷
更短的构建--调试-完成周期
新的特性可以迅速缩短花费在构建和测试设计上的时间,一些新特性包括:
仿真技术:Windows CE .NET具有仿真技术,该技术允许开发人员在他们的Windows 200
0或Windows XP Professional工作站上开发和测试他们的设计,而无需额外的硬件投资
。
新的平台向导:新的平台向导使用户可以迅速而容易地基于所构建的设备类型创建一个
新的平台,并且为设备的设计提供一个基础:
移动电话/智能电话
自定义设备
数字成像设备
工业自动化设备
Internet/媒体设备
PDA/移动手持设备
住宅门禁
POS设备
顶置盒
微内核
Web板设备
Windows瘦客户机
主板支持包(BSP):Windows CE .NET包括了多种主板支持包,从而缩短了让操作系统
正常工作在硬件上所需的时间。Windows CE .NET当前支持以下的标准开发主板(SDB)
适用于x86微处理器的Advantech PCM-5822 和PCM-5823 SDB
适用于ARM920微处理器ARM 整合SDB
适用于Vr5432微处理器DDB5476 SDB
适用于x86微处理器Dorado 参考平台(Reference Platform)
适用于Vr4122微处理器Eagle SDB
适用于SH3微处理器Hitachi SH3 Keywest SDB
适用于SH4微处理器Hitachi SH4 Aspen SDB
适用于SA1110微处理器Intel SA1110/SA1111 Assabet SDB
适用于XScale PXA250微处理器的DBPXA250 开发平台
适用于x86微处理器Lanner EM-350和EM-351 SDB
适用于x86微处理器的CEPC平台
共享的调试以太网驱动程序:使调试和生产活动可以共享一个单一的以太网端口。
内核独立传输层(Kernel Independent Transport Layer,KITL):内核独立传输层是
一个抽象层,它可以向工具透明地呈现通信硬件。KITL通过删除对开发主板和旧有连接
的需要改善了内核的加载、调试和分析过程。
远程调用调节器:过程调用配置文件可以发现应用程序中的性能瓶颈。
远程内核跟踪:它是一个得到了增强的线程调节器,可以帮助您追捕到竞争条件。
远程性能监视器:它是一个得到了增强的性能监视工具,可以帮助您对应用程序进行跟
踪和测量系统的性能。
扩充远程服务配置:Windows CE .NET允许您保有一个面向多个目标设备的配置列表,每
个目标设备都有它自己独一无二的设置。这些设置已经被扩充,以允许对下载和连接过
程以及在对目标设备进行重启时控制目标设备所具有的行为。
示例设备驱动程序:提供了新的USB打印、海量存储类设备和远程网络驱动程序接口规范
(RNDIS)的示例设备驱动程序。
扩充输出SDK向导:通过使用该向导,您可以创建一个可以导入到Microsoft eMbedded
Visual C++ 4.0开发环境中的自定义SDK,来为自定义平台编写应用程序。SDK向导现在
可以创建一个.msi格式的SDK安装包(SDK Installation Package),而且基于特性的文
档可以被输出到SDK中。
Windows CE .NET的标准SDK:使用Windows CE .NET的 SDK跨越设备构建具有近乎全球移
植性的应用程序。
自动的相关性验证: Windows CE .NET 现在可以图形化显示相关性验证结果。
Platform Builder开始页: 当Platform Builder运行后,一个有帮助内容的开始页将自
动打开。 如果你的开发机连接到Internet,开始页将Windows Embedded社团的最新内容
动态更新。如果你从来没有连接到Internet,Platform Builder将只显示缓存内容。除
此之外,开始页具有Web提示的特性,当微软发布更新组件时(QFE),它会通知你。
应用程序开发工具
为受控(利用了.NET技术)代码和非受控(本机)代码提供支持:
受控代码:.NET Compact Framework使得程序员可以获得丰富的框架,包括用户界面(
UI)类、数据访问、XML支持、自动化内存管理以及碎片收集。受控代码是由.NET Fram
ework中的一个主要组件执行的,即通用语言运行时(Common Language Runtime,CLR)
。CLR是一个高性能的性能执行引擎,它提供了众多运行时服务,包括内存管理、交叉语
言继承、代码访问安全性和自动的对象生命周期控制等等。Visual Studio .NET为创建
受控代码提供了开发环境:
Visual Studio .NET:简化了分布式XML Web服务和应用程序的开发和部署。Visual St
udio .NET充分利用了.NET Framework,它使用公共的Internet标准,可以集成运行在任
何平台上的新应用程序和现有应用程序。Visual Studio .NET包括许多对Visual Basic
、Visual C++以及另外一个全新的编程语言Visual C#的新的增强。Visual Studio .NE
T支持以下语言使用受控代码编写应用程序:
Visual Basic .NET:Visual Basic .NET现在提供了完全的面向对象语言特性,包括在
编写Web应用程序时面向表单的实现继承和视觉继承。它还允许开发人员利用显式空闲线
程创建高度可伸缩的代码,以及利用现代化语言结构的附加特性(例如结构化异常处理
)来创建高度可维护的代码。
Visual C++ .NET:Visual C++ .NET使用C++开发语言为Web服务的创建提供深度支持。
该开发环境由符合工业标准的活动模板库(Active Template Library,ATL)、Micros
oft基础类库(MFC)、高级语言扩展和能高效进行编辑和调试的集成开发环境(IDE)组
成。传统的非受控C++和新的受控C++代码可以自由地在同个程序中混合使用。可以通过
使用受控扩展将现有组件封装为具有.NET功能的组件,从而在实现同.NET Framework的
集成的同时,保护了在现有代码上的投资。
Visual C# .NET:C#(读作"C sharp")是一个现代化的、面向对象的安全语言。它使编
程人员可以迅速为新的.NET平台建立各种应用程序。Visual C# .NET旨在为C++的程序员
带去更快的程序开发速度,同时不牺牲C和C++的强大功能和控制。
非受控代码:经常又被称作"本机代码",非受控代码直接依托Windows CE .NET执行,从
而提供了向后兼容性和性能优势。对于使用非受控代码来创建应用程序或者组件,程序
开发人员可以使用:
eMbedded Visual C++ 4.0:独立IDE将Windows CE .NET下的程序开发效率带入了一个新
的境界,同时保持了原有的灵活性、性能和控制。eMbedded Visual C++中的新特性包括
:C++异常处理、标准模板库(STL)和运行时类型信息。
开放
在Windows CE .NET中,微软采取更加自由、灵活的原码开放策略。用户可以从系统级和
应用级的数万行原码中获得巨大帮助!
2. Windows CE .NET 4.1与Windows CE .NET 4.0相比的突出特性
Windows CE .NET 4.1是Windows CE .NET的升级版,基于其开发的设备将从这些微小但
重要的变化中获得更好的性能和更强的Windows集成功能。
这些更新主要包括以下的几个方面:
支持互联网协议版本6 (IPv6)
文件阅读器
.NET Compact Framework的Beta版
更加快速的性能
IPv6
互联网协议版本6(IPv6) 是Internet 网络层的一套新的标准协议。IPv6的设计解决了
IP协议当前版本的许多遗留问题,充分考虑了地址损耗、安全性、自动配置、扩展性等
。它的应用也将大大扩展Internet的能力,使一些有价值和具有挑战性的应用(包括端
对端、移动应用等)成为可能。IPv6是网络的未来,Windows CE .NET提供了对这种协议
的支持。
文件阅读器
Windows CE .NET 4.1包含了一套浏览最常用文档格式的文件阅读器,其包括 Microsof
t Word, Microsoft Excel, Microsoft PowerPoint, Adobe Acrobat 以及打开.jpeg图
像格式的阅读器。有这些文件阅读器,我们在CE设备上即可浏览这些文档,而不需要通
过ActiveSync传到桌面系统来同步阅读。
NET Compact Framework Beta版
Windows CE .NET 4.1包括 .NET Compact Framework.的Beta版。.NET Compact Framew
ork 将受控代码和XML Web服务带到了智能设备中,这样在设备上安全的、可下载的应用
程序得以执行。无论是智能设备、桌面系统,还是服务器,开发者都可以非常方便地在
这些环境下重用已有的编程技巧和代码。
更快速的性能
微软使用Ibench(一个测量Internet浏览性能的标准)测试Windows CE .NET 4.1, 结果显
示与Windows CE 3.0相比,其速度性能上升了60%;与Windows CE .NET相比,其速度性
能上升了15%。在瘦客户机和数字媒体设备上也作了相应的测试,详细测试方法和结果参
见:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet
/html/perfmethod.asp
posted by Jiang 6/7/2003 04:08:05 下午
7.21.2003
文件结构
每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称
为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definiti
on)文件。
C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义
文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。
1.1 版权和版本的声明
版权和版本的声明位于头文件和定义文件的开头(参见示例1-1),主要内容有:
(1)版权信息。
(2)文件名称,标识符,摘要。
(3)当前版本号,作者/修改者,完成日期。
(4)版本历史信息。
/*
* Copyright (c) 2001,上海贝尔有限公司网络应用事业部
* All rights reserved.
*
* 文件名称:filename.h
* 文件标识:见配置管理计划书
* 摘 要:简要描述本文件的内容
*
* 当前版本:1.1
* 作 者:输入作者(或修改者)名字
* 完成日期:2001年7月20日
*
* 取代版本:1.0
* 原作者 :输入原作者(或修改者)名字
* 完成日期:2001年5月10日
*/
示例1-1 版权和版本的声明
1.2 头文件的结构
头文件由三部分内容组成:
(1)头文件开头处的版权和版本声明(参见示例1-1)。
(2)预处理块。
(3)函数和类结构声明等。
假设头文件名称为 graphics.h,头文件的结构参见示例1-2。
l 【规则1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预
处理块。
l 【规则1-2-2】用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始
搜索)。
l 【规则1-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器
将从用户的工作目录开始搜索)。
2 【建议1-2-1】头文件中只存放“声明”而不存放“定义” 在C++ 语法中,类的成员
函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,
但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体
有多么小。
2 【建议1-2-2】不提倡使用全局变量,尽量不要在头文件中出现象extern int value
这类声明。
// 版权和版本声明见示例1-1,此处省略。
#ifndef GRAPHICS_H // 防止graphics.h被重复引用
#define GRAPHICS_H
#include // 引用标准库的头文件
…
#include “myheader.h” // 引用非标准库的头文件
…
void Function1(…); // 全局函数声明
…
class Box // 类结构声明
{
…
};
#endif
示例1-2 C++/C头文件的结构
1.3 定义文件的结构
定义文件有三部分内容:
(1) 定义文件开头处的版权和版本声明(参见示例1-1)。
(2) 对一些头文件的引用。
(3) 程序的实现体(包括数据和代码)。
假设定义文件的名称为 graphics.cpp,定义文件的结构参见示例1-3。
// 版权和版本声明见示例1-1,此处省略。
#include “graphics.h” // 引用头文件
…
// 全局函数的实现体
void Function1(…)
{
…
}
// 类成员函数的实现体
void Box::Draw(…)
{
…
}
示例1-3 C++/C定义文件的结构
1.4 头文件的作用
早期的编程语言如Basic、Fortran没有头文件的概念,C++/C语言的初学者虽然会用使用
头文件,但常常不明其理。这里对头文件的作用略作解释:
(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要
向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功
能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中
的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的
负担。
1.5 目录结构
如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保
存于不同的目录,以便于维护。
例如可将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)
。
如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”
。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。
--
-
╭────────────────────────────╮
│ 风萧传瑟声,叶落根深处,青阶入野无归途,他乡不知顾 │
│ 泣下问和谁,叹者行已暮,寒眉傲骨今尚在,奈何入凡土 │
╰────────────────────────────╯
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:210.130毫秒