gpt4 book ai didi

windows - 我可以一直假设 sizeof(GUID)==16 吗?

转载 作者:可可西里 更新时间:2023-11-01 13:29:03 26 4
gpt4 key购买 nike

windows header中GUID的定义是这样的:

typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;

但是,没有定义没有包装。由于结构成员的对齐取决于编译器实现,因此可以认为此结构的大小可能超过 16 个字节。

如果我可以假设它始终为 16 个字节 - 我使用 GUID 的代码更加高效和简单。但是,这将是完全不安全的 - 如果编译器出于某种原因在成员之间添加一些填充。

我的问题是否存在潜在原因?或者是 sizeof(GUID)!=16 实际上真的为 0 的场景的概率。

最佳答案

这不是官方文档,但可能是this article可以减轻你的一些恐惧。我想还有一个关于类似主题的,但我现在找不到了。

我想说的是 Windows 结构确实有一个打包说明符,但它是一个全局设置,位于头文件中的某处。它是 #pragma 之类的。而且它是强制性的,因为否则由不同编译器编译的程序无法相互交互 - 甚至无法与 Windows 本身交互。

关于windows - 我可以一直假设 sizeof(GUID)==16 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949598/

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