Duplicaté possible: strong>
Que signifie « #define STR (a) #Un » faire?
Évaluation des macros en C Langage de programmation P>12 f(1,2)
3 Réponses :
J'ai étendu votre programme avec une ligne supplémentaire
printf("%s\n","12");
printf("%s\n","f(1,2)");
premier: strong> devient: p> qui à son tour devient p> < Pré> xxx pré> devient p> Etant donné que # code> convertit l'argument en un paramètre de chaîne. p> p>
C standard standard indique que les arguments macro ne sont pas élargis s'ils sont stricts ou concatérés. C'est pourquoi g (votre_macro) code> Votre_macro n'est pas développé. Toutefois, dans H (votre_macro) Code> Case - H () fait stringification
Est-ce que tout le monde craquait toujours leur cerveau à cela? :RÉ
Votre question est exactement la même qu'une autre question donnée lien ci-dessous. Vérifie s'il te plaît.
@Sanjay j'attendais réellement F (1,2) F (1,2)
@Luchiangriggore
#define str (x) #x code>#define xstr (x) str (x) code>#define op plus code>char * opname = xstr (op); code> Ce code définit Opname sur "Plus" plutôt que "OP".