我有以下结构,主要用于处理动态 malloc 数组:
#include <stddef.h>
#include <stdint.h>
typedef struct {
size_t cap;
size_t len;
uint8_t *data;
} bytearray;
我想创建一个宏BYTEARRAY_STATIC_CREATE()
来在堆栈上创建它。做到这一点的最佳方法应该是什么?
这就是我尝试过的
#define BYTEARRAY_STATIC_CREATE(B, CAP) \
B.len = 0; \
B.cap = (CAP); \
uint8_t __##B[CAP]; \
B.data = __##B
int main()
{
bytearray a;
BYTEARRAY_STATIC_CREATE(a, 32);
}
您不需要
typedef
和指针:如果你想 malloc 也一样。使用灵活的数组成员
通常我会看到使用复合文字: