Dev Faq
10
votes

Pourquoi je ne reçois pas la production attendue dans le programme C suivant C?

Duplicaté possible: strong>

Que signifie « #define STR (a) #Un » faire?
Évaluation des macros en C Langage de programmation P>

12
f(1,2)

c macros

4 commentaires

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 #define xstr (x) str (x) #define op plus char * opname = xstr (op); Ce code définit Opname sur "Plus" plutôt que "OP".


3 Réponses :


3
votes

J'ai étendu votre programme avec une ligne supplémentaire

printf("%s\n","12");
printf("%s\n","f(1,2)");


0 commentaires

0
votes

premier: xxx

devient: xxx

qui à son tour devient < Pré> xxx

second: xxx

devient xxx

Etant donné que # convertit l'argument en un paramètre de chaîne.


0 commentaires

1
votes

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) Votre_macro n'est pas développé. Toutefois, dans H (votre_macro) Case - H () fait stringification indirectement et elle est donc conforme aux règles d'expansion des arguments macro-arguments C et est élargi.


0 commentaires

Articles qui pourrait vous intéresser :

Que puis-je utiliser pour la conversion d'entrée au lieu de scanf?
Comment puis-je calculer a * b / c lorsque a et b sont tous deux plus petits que c, mais que a * b déborde?
Comment vérifier si un pointeur void (void *) est l'un des deux types de données?
L'écran LCD affiche des caractères aléatoires (MPLAB)
© 2020 www.devfaq.fr - Licensed under  cc by-sa 3.0  with  attribution required.