Pour être plus précis, elle a toujours été définie par l'implémentation. Mais la norme indique un nombre minimums de caractères à supporter :
The implementation shall be able to translate and execute at least one program that contains at least one instance of every one of the following limits:
...
* 63 significant initial characters in an internal identifier or a macro name (each universal character name or extended source character is considered a single character)
...
(extrait de C99)
Ce qui veut dire qu'un compilo peut parfaitement respecter cette norme en ne considérant que les 63 premiers caractères des identifiants internes. Un identifiant d'une taille supérieure, même si il fonctionnerait sur votre implémentation, serait donc potentiellement non portable. Donc il y a un bien une limite pratique de 63 caractères pour les identifiants internes, 31 pour les externes. C11 ne change pas ce point, mais C89 avait bien une limite à 6 caractères (en pratique toujours, mais rien n'interdisait aux compilos de la repousser à ma connaissance).
[^] # Re: Comme les dieux l'ont voulu
Posté par guppy . En réponse au journal CamelCase ou lowercase_with_underscore. Évalué à 4.
Pour être plus précis, elle a toujours été définie par l'implémentation. Mais la norme indique un nombre minimums de caractères à supporter :
(extrait de C99)
Ce qui veut dire qu'un compilo peut parfaitement respecter cette norme en ne considérant que les 63 premiers caractères des identifiants internes. Un identifiant d'une taille supérieure, même si il fonctionnerait sur votre implémentation, serait donc potentiellement non portable. Donc il y a un bien une limite pratique de 63 caractères pour les identifiants internes, 31 pour les externes. C11 ne change pas ce point, mais C89 avait bien une limite à 6 caractères (en pratique toujours, mais rien n'interdisait aux compilos de la repousser à ma connaissance).