- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全是精心选出来的精品文档,对您的生活和学习将会有所帮助!
第6章 基本的IDL到C++的映射 3.2 简介 从IDL到C++的映射必须具备下面的条件 (1) 映射应该很直观,并且很容易使用 (2) 应该保留常用的C++风格,尽可能像保准的C++。 (3) 应该是类型安全的。 (4) 在内存和CPU使用上应该是有效的。 (5) 必须能够用于分段或硬(非虚拟)内存的体系。 (6) 必须是可以重入的,以便能够用于线程环境。 (7) 映射必须保留位的透明性。 6.3 标识符的映射 IDL标识符在生成的C++代码中被保留下来。例如: enum Color{red,green,blue}; 映射为C++枚举 enum Color{red,green,blue}; 如果在IDL定义中使用了C++关键字,在映射时将在C++关键自的IDL标识符前加上_cxx_前缀,例如: enum Class{red,green,blue}; 映射为: enum _cxx_Class{red,green,blue}; 在IDL标识符中还要避免使用双下划线。因为标准从C++中将带有下划线的标识符保留为实现所用。 6.4 模块的映射 IDL模块被映射成C++的名字空间。IDL模块的内容在相应的C++名字空间中,因此IDL定义的作用域在C++中得以保留。例如: module Outer{ //…… module Inner{ //……};}; 映射为C++的相应的篏套名字空间。 namespace Outer{ //…… namespace Inner{ //……};}; IDL模块可以重新打开。映射为C++时,这个名字空间也可以进行再次打开。可以使用using指令来删除名字空间中变量的名称。 using namespace Outer::Inner; 对于不支持名字空间的编译器,可映射为类: class Outer{ public: //…… class Inner{ public //……};}; 以上不能使用using指令映射必须完全限定不在当前作用域的变量名称。 不能对其进行模块的再次打开。 6.5 CORBA模块 CORBA定义了许多标准的IDL类型和接口。为了避免破坏全局名字空间,这些定义在CORBA模块内提供。CORBA模块的映射方法与其他模块相同,因此ORB头文件中提供了一个包含对应的C++定义的CORBA名字空间。 6.6 基本类型的映射 IDL基本类型的映射如下所示: IDL C++ Short CORBA::Short Long CORBA::Long Long long CORBA::Long long Unsigned short CORBA::Ushort Unsigned long CORBA::Ulong Unsigned long long CORBA::Ulong long Float CORBA::Float Double CORBA::Double Long double CORBA::Long double Char CORBA::Char Wchar CORBA::Wchar String Char * Wstring CORBA::Wchar * Boolean CORBA::Boolean Octet CORBA::Octet Any CORBA::Any
文档评论(0)