Uso de la sintaxis de inicialización de estructura para estructura en montón
Tengo esta estructura simple que quiero inicializar en el montón y volver como un puntero en una función.
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;
};
Hay un problema, no puedocalloc
e inicializar miembros uno por uno porquekey
es un puntero constante. Encontré en alguna parte esta sintaxis que funciona:
struct entry* entry = calloc(1, sizeof(struct entry));
*entry = (struct entry) { .key = key, .data = data, .next = NULL };
Pero no sé qué está sucediendo con eso: ¿crea una estructura "anónima" que luego se copia en el lugar donde*entry
¿vive? ¿Es seguro usarlo o debería preferir crear una estructura local que luego se copie conmemcpy
a la ubicación correcta?