Me parece que el operador de flecha de C (->) es innecesario. El operador punto (.) Debería ser suficiente. Tome el siguiente código:operador de flecha vs. operador de punto
typedef struct {
int member;
} my_type;
my_type foo;
my_type * bar;
int val;
val = foo.member;
val = bar->member;
Vemos que el operador de flecha se debe utilizar para desremarizar la barra. Sin embargo, preferiría escribir
val = bar.member;
No hay ninguna ambigüedad en cuanto a si estoy tratando de tirar de 'miembro' de una estructura o de un puntero a la estructura. Pero es fácil usar el operador incorrecto, especialmente cuando se refabrica el código. (Por ejemplo, tal vez estoy haciendo algunas operaciones complejas en foo, así que muevo el código a una nueva función y paso un puntero a foo). No creo que deba preocuparme si foo es un puntero o no; el compilador puede preocuparse por los detalles.
Entonces la pregunta: ¿no sería más simple eliminar -> del lenguaje C?
Esta pregunta no encaja bien con nuestro formato de preguntas y respuestas. Esperamos que las respuestas generalmente involucren hechos, referencias o experiencia específica; es probable que esta pregunta solicite opiniones, debates, argumentos, encuestas o debates extensos. – bzlm
Hay miles de millones de líneas de código C en uso en la actualidad. No sería sencillo eliminar nada del lenguaje C. Dicho esto, lo explícito sobre la indirección es A Good Thing. –
Tienes razón, es innecesario. Es azúcar sintáctico para '(* bar) .member'. Por definición, no necesitamos ningún azúcar sintáctico. Por otra parte, tampoco necesitamos _necesitas funciones. podríamos _hacer_ todo con 'goto'. – jpm