C++;/C#PInvoke-编组显式大小的数字 如果我想在C++ C++( INT32 < /代码>)中将一个代码< int /代码>封送到/来自一个本地(C++)库,在C++代码中声明相关变量的最好方法是什么?< /P>

C++;/C#PInvoke-编组显式大小的数字 如果我想在C++ C++( INT32 < /代码>)中将一个代码< int /代码>封送到/来自一个本地(C++)库,在C++代码中声明相关变量的最好方法是什么?< /P>,c#,c++,pinvoke,marshalling,C#,C++,Pinvoke,Marshalling,我可以使用一个标准的int,但我更愿意明确说明该变量的宽度(我知道在大多数平台上它是32位的) 到目前为止,我可以看到两种选择: int32\u tin \uuu int32(MSVC++标识符)。。。但是,如果可以的话,我希望保持平台独立 我似乎记得听说C++11为此提供了一些新的库,但我似乎找不到任何提及它的地方 谢谢。您可以使用32位的整数。有可能有一个C++实现,其中没有定义32位,但在这种情况下,所有的赌注都被关闭。 在我所知道的每一个支持C#的平台上,C/C++int都是32位的

我可以使用一个标准的
int
,但我更愿意明确说明该变量的宽度(我知道在大多数平台上它是32位的)

到目前为止,我可以看到两种选择:

  • int32\u t
    in
  • \uuu int32
    (MSVC++标识符)。。。但是,如果可以的话,我希望保持平台独立
我似乎记得听说C++11为此提供了一些新的库,但我似乎找不到任何提及它的地方


谢谢。

您可以使用32位的整数。有可能有一个C++实现,其中没有定义32位,但在这种情况下,所有的赌注都被关闭。 在我所知道的每一个支持C#的平台上,C/C++int都是32位的,所以您可能已经考虑过了

另一个要考虑的是C++代码接受的类型。如果它接受int,并且使用int不是32位的平台,那么仍然存在问题

> P>当前装运C和C++编译器中的INT关键字分别是Syt.INT32和Y-INT32的别名,它们的后端使用的具体类型。我已经写代码30年了,并且使用了8位、16位、32位和64位处理器。30年前用int,就像我今天用的一样。并且在将程序移植到下一代体系结构或操作系统版本上几乎不费吹灰之力

您也可以在winapi中看到这一点。用于函数参数或返回值的每个类型都是类型别名。Windows 1.0版中的CreateWindow()函数看起来与64位版本的Windows 8.1中使用的函数完全相同

我没有幻想这一进程今天突然停止。128位处理器已经是IBM的主要业务。语言使用类型别名来防止自己迅速过时和被遗忘。对C语言和C++语言来说,也是如此。虽然在C#的例子中,这当然需要移动一块更大的石头,但现在大多数C#程序员的头脑中都刻着这个身份


有意不使用类型别名会使程序不太方便。

INT32是一个不错的选择。C++ int不是AytIn 32的类型别名,它肯定是在微软编译器中。总有一天它会变成另一种东西,也许吧。当然。但你没有这么说。你说的是“C++语言”。