Uso da sintaxe de inicialização struct para struct on-heap
Eu tenho essa estrutura simples que quero inicializar no heap e retornar como um ponteiro em uma função.
struct entry {
const char* const key; // We don't want the key modified in any way
const void* data; // But the pointer to data can change
struct entry* next;
};
Há um problema, não possocalloc
e inicialize os membros um por um, porquekey
é um ponteiro const. Eu encontrei em algum lugar essa sintaxe que funciona:
struct entry* entry = calloc(1, sizeof(struct entry));
*entry = (struct entry) { .key = key, .data = data, .next = NULL };
Mas não sei o que está acontecendo: cria uma estrutura "anônima" que é copiada para o local onde*entry
vidas? É seguro usar ou devo preferir criar uma estrutura local que é copiada commemcpy
para o local certo?