我正在尝试使用宏初始化嵌套结构指针。我的结构如下所示。我正在使用如下宏。
typedef struct {
uint8_t Loc;
uint8_t Module;
uint8_t EventId;
} ErrorPayload;
typedef struct {
uint32_t ErrorCount;
uint32_t ReturnCode;
ErrorPayload *Payload;
} ErrorInfo;
typedef struct {
ErrorInfo *ErrInfo;
uint32_t ArraySize;
uint32_t Cols;
} ErrorMetaData;
#define ErrorMetadataInit(Mdata, _Buffer, _Size) \
ErrorMetaData Mdata = { \
.ErrInfo = (ErrorInfo *) (_Buffer), \
.ErrInfo = { \
.ErrorCount = 0, \
}; \
.ArraySize = (_Size - sizeof(ErrorInfo))/ sizeof(ErrorPayload), \
.Cols = 0, \
}
我的主要问题是我无法为
ErrorPayload
的结构成员分配任何值,它是 ErrorInfo
结构的一部分。它总是给出构建错误。
任何帮助都会非常有帮助。
我想将值分配给定义的宏内的
ErrorPayload
结构。
首先填充
_Buffer
更简单,假设它已被定义为指向 ErrorInfo
的指针,这就是我编写代码的方式:
*_Buffer = (ErrorInfo) { .ErrorCount = 0 };
ErrorMetaData Mdata = {
.ErrInfo = (ErrorInfo *) (_Buffer),
.ArraySize = (_Size - sizeof(ErrorInfo)) / sizeof(ErrorPayload),
.Cols = 0
}
尽管我建议将其设为
[[gnu::always_inline]] static inline
函数,并取消宏。