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.4 Vordefinierte Präprozessor-Direktiven (ANSI C)  toptop

Folgende vordefinierten Makros werden von ANSI C vorgeschrieben:


Tabelle 12.5   Vordefinierte Standard-Makros

Makroname Bedeutung
LINE__ Zeilennummer der aktuellen Zeile in der Programmdatei
FILE__ Name der Programmdatei
DATE__ Übersetzungsdatum der Programmdatei
TIME__ Übersetzungszeit der Programmdatei
STDC__ Erkennungsmerkmal eines ANSI C-Compilers. Ist die ganzzahlige Konstante auf den Wert 1 gesetzt, handelt es sich um einen ANSI C-konformen Compiler.
cplusplus C++-Code

Hier folgt ein Beispiel zur Verwendung dieser vordefinierten Makros:

/* direktiven.c */
#include <stdio.h>
#include <stdlib.h>
#if defined __STDC__
   #define isstd_c() printf("ANSI C Compiler\n")
#else
   #define isstd_c() printf("Kein ANSI C Compiler\n")
#endif
int main(void) {
   printf("Zeile %d in Datei %s\n",__LINE__,__FILE__);
   printf("Übersetzt am %s um %s\n",__DATE__,__TIME__);
   #line 999 "asdf.c"
   printf("Zeile %d in Datei %s\n",__LINE__,__FILE__);
   isstd_c();  /* Ist es ein ANSI C Compiler ? */
   return EXIT_SUCCESS;
}

Im Programm wurde gleich eine weitere neue Präprozessor-Direktive eingesetzt:

#line Zeilennummer dateinamen.c

Damit wird bewirkt, dass die nächste Zeile der Datei dateiname.c mit der Zeile Zeilennummer (also 999) beginnt. Diese Präprozessor-Direktive beeinflusst das Programm selbst nicht, sondern nur die Nummerierung der einzelnen Zeilen. Sie wird verwendet, um einem Programm Zeilennummern für Querverweise oder Fehlermeldungen zu übergeben. Diese Direktive wird vorwiegend von Programmen wie lex oder yacc verwendet, welche C-Quelltexte erzeugen.

Außer den vordefinierten Makros, wie __LINE__, __FILE__, __DATE__, __TIME__ und __STDC__, sind im C99-Standard weitere drei Makros hinzugekommen.


Tabelle 12.6   Neue vordefinierte Standardmakros

Makro Bedeutung
__func__ Gibt den Namen der Funktion aus, in der dieses Makro verwendet wird.
__STD_HOSTED__ Wenn es sich um eine Hosted-Implementierung der Standardbibliothek handelt, ist diese Konstante 1, ansonsten 0.
__STD_VERSION__ Wenn der ANSI C99 Standard unterstützt wird, ist diese Konstante 199901L (1999 Januar).

 << 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