Bonjour,
Tout d'abord je tiens à m'excuser par avance si la question a déjà été posée. J'ai cherché sur le forum avec quelques mots clés qui me sont passés par la tête mais je n'ai pas trouvé de réponse. Désolé si j'ai mal cherché...
Dans le manuel de gcc 4.3.2, il est fait mention de "non-lvalue arrays". Je ne me suis pas mis au C99, mais il me semble que l'expression ne figure pas dans le standard. En tout cas, dans le K&R2, si j'ai bonne mémoire, il y a une ligne qui dit quelque chose du genre: "Arrays are not lvalues." Donc, je trouve l'expression utilisée dans le manuel de gcc vraiment bizarre...
Ce que je ne saisis pas trop bien non plus, c'est le paragraphe "5.19 Non-Lvalue Arrays May Have Subscripts". Je ne vois pas pourquoi le code présenté - dans le manuel de gcc - n'est pas valide en C89.
J'ai testé sous Borland 5.5 et ça compile correctement. Je suis conscient que cela ne signifie pas que c'est conforme à la norme, ce pourrait être une extension du compilateur ou bien juste une non conformité à la norme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct foo {int a[4];}; struct foo f(); bar (int index) { return f().a[index]; }
Vos explications sont les bienvenues. Merci d'avance,
Stephane
Partager