c gcc typeof

operador de typeof en C



gcc (4)

¿Es typeof en C, realmente un operador?
Estoy pensando porque no hay polimorfismo en C, que no hay nada que hacer en el tiempo de ejecución. Es decir, la respuesta a typeof se conoce en tiempo de compilación. (No puedo pensar en un uso de typeof que no se conocería en tiempo de compilación). Así que parece ser más una directiva en tiempo de compilación, que un operador.

¿El typeof usa algún tiempo de ejecución (procesador) (en GCC)?


Como typeof es una extensión del compilador, no existe realmente una definición para él, pero en la tradición de C sería un operador, por ejemplo, sizeof y _Alignof también se ven como operadores.

Y está equivocado, C tiene tipos dinámicos que solo se determinan en tiempo de ejecución: tipos de variables modificadas (VM).

size_t n = strtoull(argv[1], 0, 0); double A[n][n]; typeof(A) B;

solo se puede determinar en tiempo de ejecución.



Es una extensión de GNU. En pocas palabras, es una forma conveniente de declarar un objeto que tiene el mismo tipo que otro. Por ejemplo:

int x; /* Plain old int variable. */ typeof(x) y; /* Same type as x. Plain old int variable. */

Funciona completamente en tiempo de compilación y se usa principalmente en macros. Un ejemplo famoso de macro que depende de typeof es container_of .


No es exactamente un operador, sino una palabra clave. Y no, no tiene magia de tiempo de ejecución.