Au cours de mes lectures, je suis tombé sur WG14 Rapport de défaut n°51 écrit en 1993 (ou peut-être 1893, ils ont laissé de côté le siècle et le millénaire). Dans l'exemple de code là, apparemment un opérateur orthographié ->>
est utilisé sur un pointeur vers un struct
. Je ne le trouve pas dans les tableaux de précédence des opérateurs que j'ai trouvés, et je me demande donc s'il s'agit ou s'il s'agissait d'un opérateur, et si oui, que fait (ou faisait, selon le cas) cet opérateur ?
J'ai d'abord pensé qu'il s'agissait d'une faute de frappe, mais elle est reproduite deux autres fois dans le texte et une autre fois dans l'exemple de code de la réponse à la question, et j'ai du mal à croire qu'elle ait échappé à au moins deux experts en C sans être remarquée, alors qu'elle a sauté aux yeux d'un novice comme moi. Il se trouve également au point central du code, très facile à remarquer, et n'a jamais été corrigé.
Voici le code avec l'indentation ajoutée :
#include <stdlib.h>
struct A {
char x[1];
};
main()
{
struct A *p = (struct A *) malloc(sizeof(struct A) + 100);
p->>x[5] = '?'; /* This is the key line [for both them and us] */
return 0;
}
J'ai essayé de compiler ce code avec un compilateur C et C++ et il n'a pas été analysé dans les deux cas. Peut-être s'agissait-il d'un opérateur dans une ancienne version du C qui n'est plus utilisé ?
Cela ressemble étrangement à la Quel est le nom de cet opérateur : "-->" ? question, mais je ne pense pas qu'il s'agisse d'une combinaison de deux autres opérateurs, je ne vois pas comment on peut le diviser et être valide.