gpt4 book ai didi

c# - 如何在不使用宏的情况下使 C# 结构与 x86 和 x64 兼容?

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:13 24 4
gpt4 key购买 nike

考虑下面的代码,有什么办法可以去掉#if#else #endif 宏吗?使结构与 x86 和 x64 系统兼容!

    public struct SP_INTERFACE_DEVICE_DATA
{
#if bit32
public int cbSize;
#else
public Int64 cbSize;
#endif
public GUID InterfaceClassGuid;
public int Flags;
public int Reserved;
}

我尝试制作两个结构,但它失败了,因为当前代码的复杂性令人难以抗拒。

这个结构被一些使用 DllImporting 从 dll 导入的 api 使用

最佳答案

您通常会使用 IntPtr,在 32 位模式下为 4 个字节,在 64 位模式下为 8 个字节。

但这是不正确的,您可以从 winapi declaration 中看出该字段被声明为 DWORD。在 64 位模式下也是 4 个字节。

关于c# - 如何在不使用宏的情况下使 C# 结构与 x86 和 x64 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116192/

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