Eu tenho a seguinte estrutura que é usada principalmente para lidar com arrays malloc'ed dinâmicos:
#include <stddef.h>
#include <stdint.h>
typedef struct {
size_t cap;
size_t len;
uint8_t *data;
} bytearray;
Gostaria de criar uma macro BYTEARRAY_STATIC_CREATE()
para criá-la na pilha. qual deve ser a melhor abordagem para fazer isso?
Isso é o que eu tentei
#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);
}
Você não precisa
typedef
de um ponteiro:O mesmo se você quiser Malloc. Use membro de array flexível
Normalmente vejo literais compostos sendo usados: