C – l’élément d’initialisation n’est pas constant

Voici un extrait de mon code en C:

const char *d = "dictionary.dict"; struct dictionary *dict = dictionary_load_lang(d); // Comstack error here 

Dictionary_load_lang () est de type struct dictionary *dictionary_load_lang(const char *lang) .

Lors de la compilation, le compilateur dit “l’élément initializer n’est pas constant” et je ne vois pas pourquoi. Que se passe-t-il?

dictionary_load_lang() est une fonction, donc une constante. Vous ne pouvez pas utiliser de non-constantes pour les variables de stockage statiques (lire: global et / ou static ):

Selon la norme C99: section 6.7.8:

Toutes les expressions dans un initialiseur pour un object ayant une durée de stockage statique doivent être des expressions constantes ou des littéraux de chaîne.

Cependant, vous pouvez effectuer une telle initialisation si vous vous trouvez dans une fonction et pour une variable non statique.