4631Close4633
ZerosquareOn the 2021-06-21 at 04:12pm
J'ai regardé dans le K&R et pour une fois, je n'ai pas trouvé de réponse claire à cette question. Il est mentionné que les variables static d'une fonction conservent leurs valeurs d'un appel à l'autre, mais rien n'est dit explicitement sur leur accessibilité en-dehors de la fonction, ou le fait que leur adresse ne varie pas d'un appel de fonction à l'autre.

Sur StackOverflow, il semble y avoir consensus sur le fait que ça ne pose pas de problème, mais je n'ai vu personne citer un paragraphe du standard pour appuyer ses dires. Bref, il se pourrait bien que ce soit le genre de truc qui paraît évident et qui marche sur 99% des compilos, mais qui n'est pas formellement garanti.

(Au passage, static dans une fonction, c'est discutable. Comme les variables globales, c'est incompatible avec la réentrance et le multi-threading, mais ça saute moins aux yeux qu'une variable globale quand on lit le code.)

[cross]