如果我希望将C#(int
)中的Int32
编组到本地(C ++)库中,那么在C ++代码中声明相关变量的最佳方法是什么?
我可以使用标准int
,但我更愿意明确该变量的宽度(我知道它在大多数平台上都是32位)。
到目前为止,我可以看到两个选项:
int32_t
__int32
(MSVC ++标识符)...但是如果我能我似乎记得听说C ++ 11有一些新的库,但我似乎无法找到它。
谢谢。
答案 0 :(得分:1)
当前出货的C#和C ++编译器中的 int 关键字分别是 type aliases ,分别用于System.Int32和__int32,它们的后端使用的具体类型。我已经编写了30年的代码,并使用了8位,16位,32位和64位处理器。 30年前就像我今天一样使用 int 。并且花费很少的精力将程序移植到下一代架构或操作系统版本。
你也会在winapi中看到这一点。用于函数参数或返回值的每个类型都是类型别名。 Windows 1.0版中的CreateWindow()函数与<64>版本的Windows 8.1中使用的完全相同
我并不认为这种进展今天突然停止了。 128位处理器已经成为IBM的基础。语言使用类型别名来防止自己快速过时和遗忘。适用于C和C ++等语言,对于C#也是如此。虽然在C#的情况下肯定需要移动一块更大的岩石,但现在大多数C#程序员都认同这种形象。
故意不使用类型别名会使您的程序更少可移植。
答案 1 :(得分:0)
你可以使用正好是32位的int32_t。有可能存在未定义int32_t的C ++实现,但在这种情况下,所有注意都将关闭。
在我所知道的支持C#的每个平台上,C / C ++ int都是32位,所以你可能会过度思考这个。
要考虑的另一件事是您的C ++代码接受的类型。如果它接受int,并且你使用int不是32位的平台,那么你仍然有问题。