是否可以通过长而不是CORBA :: Long等?

时间:2012-09-14 11:16:30

标签: c++ type-conversion corba

我无法在任何地方找到答案。问题是(?)简单。我们假设我有这样的功能:

class Sth {

private:
   long u;
public:
   void set(long u)
   {
    this.u = u;
   }

};

我按照这样运行:

Sth s;
CORBA::Long val = 5;
s.set(val);

我可以这样做吗?一切都会好吗?

3 个答案:

答案 0 :(得分:1)

这应该没问题。 According to the IBM reference,IDL long的范围为 -2 ^ 31至2 ^ 31-1 至少32位

它应该在c ++中原生地转换为long。标准没有定义大小,但定义了这些值可以容纳的最小范围。 CORBA::Longlong的typedef,可能会在平台之间发生变化。

答案 1 :(得分:1)

您可以使用int_least32_t(来自<stdint.h><cstdint>),这是一个保证至少32位宽的本机类型,并且对相应的编译器本机进行typedef类型。

答案 2 :(得分:1)

这取决于您正在使用的IDL到C ++映射的实现。在新的IDL到C ++ 11中,将IDL映射中的长映射映射到int32_t。