10.5 Ersetzung eines Makroparameters durch einen String 

Ist in einem Ersetzungstext vor dem Parameter das Zeichen # gesetzt, werden beim Aufruf des Makros das # und der Parameter durch den entsprechenden String ersetzt:
#define ausgabe(variable) printf(#variable"=%d\n",variable)
Hier wird der Variablen zahl der Wert 10 (int Zahl=10;) übergeben. Steht im Programm beispielsweise:
ausgabe(Zahl);
dann wandelt dies der Präprozessor zunächst um in:
printf("Zahl"" = %d\n", Zahl);
Tatsächlich verhält sich der Ausdruck so, als würde Folgendes in der Zeile stehen:
printf("Zahl = %d\n", Zahl);
Hierzu ein kleines Programmbeispiel, in dem diese Technik verwendet wird:
/* replace_makrparam.c */ #include <stdio.h> #include <stdlib.h> /* Bei Linux muss für math.h das Compiler-Flag -lm * mit angegeben werden: * gcc -o strkont strkont.c -lm */ #include <math.h> #define wurzel(zahl)\ printf(#zahl" von %f = %f\n",zahl,sqrt(zahl)) #define summe(zahl1,zahl2)\ printf(#zahl1 "+" #zahl2 " = %d\n",zahl1+zahl2) #define gibaus(string)\ printf(#string"\n") #define wertvon(zahl,format)\ printf(#zahl" = "format"\n",zahl) int main(void) { float Wurzel; int Wert1 = 100, Wert2 = 150, integer = 20; char character = 's'; float floating = 5.550f; printf("Zahl eingeben : "); scanf("%f",&Wurzel); wurzel(Wurzel); summe(Wert1,Wert2); gibaus(Hallo Welt); wertvon(character,"%c"); wertvon(integer,"%d"); wertvon(floating,"%f"); return EXIT_SUCCESS; }
Abbildung 10.4 Ersetzung eines Makroparameters durch einen String
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.