gpt4 book ai didi

c# - Interop c# 使用来自 c++ 的 "long"

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:52 25 4
gpt4 key购买 nike

在我的系统上:C++ 中的 sizeof(long) 是 4 又名 32 位C# 中的 sizeof(long) 是 8 又名 64 位

因此,在我的 Interop 方法声明中,我一直用 C# int 替换 C++ long,但我觉得这不安全?

为什么 long 与 C++ 中的 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# - Interop c# 使用来自 c++ 的 "long",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2800642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com