gpt4 book ai didi

c++ - 结构/类数据对齐和填充算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:52 26 4
gpt4 key购买 nike

我似乎找不到任何关于如何在 C、C++ 中的结构或类中计算填充的信息。

在 HLSL 中有称为“常量变量”的数据结构,它们非常类似于启用了 #pragma pack (4) 的 C 结构。 Here is a link有关 HLSL 中常量变量的更多信息。

我遇到的问题是尝试创建结构格式描述符。解析 HLSL 代码后,常量描述符将包含有关常量变量结构中包含的数据类型的信息。它将描述每个成员变量的数据类型、它的偏移量和结构的总大小。由于填充,我遇到的问题是确定结构的最终大小。

如果有这方面的算法,那么我应该能够编写代码并计算 HLSL 中任何“常量变量”的实际填充大小。问题是我不知道它是什么,也不知道在哪里可以找到它?

最佳答案

My question is asking for the algorithim used to make #pragma pack 4 work. (e.g. does it look at one variable at a time within a struct and use some sort of max size test to determine where to pad or does it analyses the entire struct and somehow shuffle data around.)

编译器无法在 C 风格的结构中随机排列数据。 C 保证成员的分配完全按照声明的顺序进行。任何填充都必须出现在成员之间或结构的末尾。

具有访问说明符的 C++ 类不必与 C 兼容,因此允许进行一些重新排序。

关于c++ - 结构/类数据对齐和填充算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433132/

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