Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 12 Präprozessor-Direktiven
  gp 12.1 Einkopieren von Dateien mittels #include
  gp 12.2 Makros und Konstanten – #define
    gp 12.2.1 Symbolische Konstanten mit #define
    gp 12.2.2 Makros mit #define
  gp 12.3 Bedingte Kompilierung
  gp 12.4 Vordefinierte Präprozessor-Direktiven (ANSI C)
  gp 12.5 Ersetzung eines Makroparameters durch einen String
  gp 12.6 #undef – Makronamen wieder aufheben
  gp 12.7 Ausgeben von Fehlermeldungen – #error
  gp 12.8 #pragma


Galileo Computing - Zum Seitenanfang

12.5 Ersetzung eines Makroparameters durch einen String  toptop

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");

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 der Compilerflag -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
Hier klicken, um das Bild zu Vergrößern

Abbildung 12.4   Ersetzung eines Makroparameters durch einen String

 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de