J'essaie de faire quelque chose qui est conceptuellement similaire à ceci, mais ne peut pas sembler le faire fonctionner (erreur montrée à la fin) des idées?C Programmation: préprocesseur, macros comme des jetons
#include <stdio.h>
int main(int argc , char const *argv[])
{
int abc_def_ghi = 42;
#define SUFFIX ghi
#define VAR(prefix) prefix##_def_##SUFFIX
printf("%d\n" , VAR(abc));
return 0;
}
// untitled:8: error: ‘abc_def_SUFFIX’ undeclared (first use in this function)
'const argv'? La première fois que je vois une telle chose! L'idée semble bien, mais je ne suis pas sûr que je l'aime: il rend 'principal' non-conforme et m'empêche de faire quelque chose que je n'ai jamais fait;) – pmg
Ce n'est pas non-conforme. 'argv' peut être déclaré comme équivalent à' char * argv [] '(C99 5.1.2.2.1), et l'ajout de' const' ne change rien sauf ce que 'main()' est autorisé à faire avec il (sans un plâtre). Rappelez-vous qu'un pointeur vers un non-const peut être converti en un pointeur vers un const sans problème - jusqu'au fait que les valeurs de ces pointeurs se comparent égales (6.3.2.3/2). –
Bien, merci Michael. C'est l'inverse (enlever 'const') qui le rendrait non-conforme. Je commence à aimer ça! – pmg