是否可以传递 long 而不是 CORBA::Long 等?

问题描述 投票:0回答:3

我在任何地方都找不到答案。问题很(?)简单。假设我有这样的功能:

class Sth {

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

};

我这样运行它:

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

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

c++ type-conversion corba
3个回答
2
投票

这个应该没问题。 根据 IBM 参考资料,IDL long 的范围为 -2^31 到 2^31-1,大小至少为 32 位

它应该在 C++ 中本地转换为

long
。该标准没有定义大小,但定义了这些值可以容纳的最小范围。
CORBA::Long
long
的类型定义,在不同平台之间可能会发生变化。


1
投票

您可以使用

int_least32_t
(来自
<stdint.h>
<cstdint>
),它是保证至少 32 位宽的本机类型,并且 typedef 为适当的编译器本机类型。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.