我想知道如何获得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/