在我的系统上: c++ 中的 sizeof(long) 是 4 又名 32 位 C# 中的 sizeof(long) 是 8 又名 64 位
所以在我的互操作方法声明中,我一直用 c# int 替换 c++ long,但我感觉这不安全?
为什么 C++ 中 long 与 int 大小相同?那么long long是64位吗?接下来长长长长是什么??
最佳答案
假设您有一个最新的 C 库,最好的办法是 include <stdint.h>
并使用uint64_t
, int64_t
, uint32_t
, int32_t
。无论底层平台的型号如何,这都将起作用。
但如果您好奇的话,根本问题是不同的系统使用不同的模型。在32位系统上,Posix和Windows都使用ILP32,这意味着整数、长整型和点都是32位长。
对于 64 位,Posix 和 Windows 使用不同的模型。
Posix 通常使用 LP64,这意味着 32 位整数、64 位长整型和 64 位指针。
Windows 使用 LLP64,这意味着 32 位整数和长整型、64 位长整型和 64 位指针。
关于c# - 使用 c++ 中的 "long"进行互操作 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2800642/