我想知道如何获得C语言中结构的偏移值
我正在将结构转换为c#。例如。如果log_level_offset的偏移值将为0,则类似于下一个和其余属性的偏移值。

我的结构示例:

typedef struct TestStruct
{
    const AVClass *av_class;
    int log_level_offset;
    enum AVMediaType codec_type;
    const struct AVCodec  *codec;
    void *priv_data;
    int bit_rate_tolerance;
    uint8_t *extradata;
    int extradata_size;
    float b_quant_factor;
    uint16_t *intra_matrix;
    uint64_t channel_layout;
} TestStruct;

最佳答案

要了解c中struct成员的字节位置,请使用stddef.h中的offsetof宏:

#include <stddef.h>

printf("%zu", offsetof(struct TestStruct, log_level_offset));


%zu,因为宏返回类型为size_t的整数。)

请注意,这考虑了潜在的填充字节,因此一个系统上的偏移量不一定与另一系统上的偏移量相同。

关于c# - 如何知道类型结构属性的偏移值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45669638/

10-13 06:47