简体   繁体   中英

CORBA IDL to C++ - char vs. unsigned char?

We're using OmniORB with our C++ server. Currently, when an object is specified as a char in the IDL file, it is translated to an unsigned char in C++. We want it to be just char . Is there something we can change to make this happen?

It is implementation defined ( page 15 in the spec ) what the IDL types boolean , char and octet map to.

omniORB chooses to :

...
typedef unsigned char _CORBA_Char;
typedef unsigned char _CORBA_Octet; 
...

You can change the omniORB sources, though I doubt that would be a good idea. Or you can accept that CORBA::Char does not represent the C++ char type.

I would recommend using CORBA::Char when calling functions that are direct CORBA calls and assigning return values of such functions.

If you need to convert them to/from 'char' or 'unsigned char', a static_cast should do the job.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM