Bueno, su código usa estructuras en lugar de indicadores para las estructuras. Hay maneras de hacer lo que buscas, incluyendo:
static struct country_t us = { "United States of America", "America" };
static struct country_t uk = { "England", "Europe" };
static struct country_t et = { "Ethiopia", "Africa" };
struct country_t *countries[] = { &us, &uk, &et, };
Hay otras maneras de hacerlo con inicializadores designados y literales compuestos en C99. Sección 6.5.2.5 'literales compuestos' muestra el camino:
struct country_t *countries[] =
{
&(struct country_t) { "United States of America", "America" },
&(struct country_t) { "England", "Europe" },
&(struct country_t) { "Ethiopia", "Africa" },
};
El estándar ilustra punteros a estructuras con una llamada a función. Tenga en cuenta que no todos los compiladores C aceptan la sintaxis C99, y estos literales compuestos no estaban presentes en C89 (también conocido como C90).
Edit: Actualizada para utilizar códigos de país ISO 3166 de 2 letras. También hizo que las estructuras nombradas se convirtieran en variables estáticas, esos símbolos no eran visibles fuera del archivo antes (porque no existían) y ahora tampoco son visibles fuera del archivo. Debatí si hacer algo const y decidí no hacerlo, pero usar const cuando puedes es generalmente una buena idea. Además, en el ejemplo, hay 3 países en 3 continentes. Si tuviera varios países en un solo continente (la norma), es posible que desee poder compartir las cadenas continentales. Sin embargo, si puede hacerlo de forma segura (o no) depende de los detalles del struct country_t
(que no se dieron), y de si el programa tiene permiso para actualizar la tabla (que vuelve a la pregunta de la constidad).
En el primer ejemplo, debería marcar todas las estructuras como 'estáticas': no deberían necesitar ser visibles fuera de la unidad de compilación actual, y están saturando los enlaces espacio de nombres ahora. – ephemient
Estoy de acuerdo: decidí no complicar la respuesta con ese detalle, aunque codificaba la solución para mi propio trabajo, todo lo que podría ser estático (invisible fuera del archivo) sería. –