typeof opérateur en C
Est typeof en C, vraiment un opérateur?
Je pense parce qu'il n'y a pas de polymorphisme en C, qu'il n'y a rien à faire à l'exécution. Autrement dit, la réponse à typeof est connue au moment de la compilation. (Je ne peux pas penser à une utilisation de typeof qui ne serait pas connue au moment de la compilation.) Donc, il semble être plus une directive de compilation qu'un opérateur.
Typeof utilise-t-il une exécution (processeur) (dans GCC)?
4 réponses
Puisque typeof
est une extension de compilateur, il n'y a pas vraiment de définition pour cela, mais dans la tradition de C ce serait un opérateur, par exemple sizeof
et _Alignof
sont également considérés comme des opérateurs.
Et vous vous trompez, C a des types dynamiques qui ne sont déterminés qu'au moment de l'exécution: types de variables modifiées (VM).
size_t n = strtoull(argv[1], 0, 0);
double A[n][n];
typeof(A) B;
Ne peut être déterminé qu'au moment de l'exécution.
C'est une extension GNU. En un mot, c'est un moyen pratique de déclarer un objet ayant le même type qu'un autre. Par exemple:
int x; /* Plain old int variable. */
typeof(x) y; /* Same type as x. Plain old int variable. */
Il fonctionne entièrement à la compilation et il est principalement utilisé dans les macros. Un célèbre exemple de macro s'appuyant sur typeof
est container_of
.
C'est une extension C du compilateur GCC, voir http://gcc.gnu.org/onlinedocs/gcc/Typeof.html
Ce n'est pas exactement un opérateur, mais plutôt un mot-clé. et non, il ne fait pas de magie d'exécution.