CORBA IDL到C++ - 字符与无符号字符?
问题描述:
我们在我们的C++服务器上使用OmniORB。目前,当一个对象在IDL文件中被指定为char
时,它将被转换为C++中的unsigned char
。我们希望它只是char
。有什么我们可以改变,使之发生?CORBA IDL到C++ - 字符与无符号字符?
答
它是实现定义的(page 15 in the spec)什么是IDL类型boolean
,char
和octet
映射到。
...
typedef unsigned char _CORBA_Char;
typedef unsigned char _CORBA_Octet;
...
您可以更改omniORB来源,但我怀疑这将是一个好主意。或者您可以接受CORBA::Char
不代表C++ char
类型。
答
当调用直接CORBA调用函数并分配这些函数的返回值时,我会建议使用CORBA::Char
。
如果您需要将它们转换为/来自'char'或'unsigned char',static_cast
应该完成这项工作。
是的,配置您的编译器默认情况下将char视为未签名(即'-funsigned-char')。 – 2014-02-13 20:59:36
“我可以将CORBA IDL更改为C++映射” - 数千位C++程序员在90年代后期发出的一句话。 –
我不知道OmniORB的详细信息,但TAO(请参阅http://download.dre.vanderbilt.edu)对IDL字符使用C++ char类型。关于改变IDL映射,看看新的IDL to C++ 11语言映射,这实现了人们长期以来讨论的映射(请参见http://www.omg.org/spec/CPP11/) ,我们将其作为TAOX11的一部分实施(请参阅http://swsupport.remedy.nl)。 –