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

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 10 Präprozessor-Direktiven
Pfeil 10.1 Einkopieren von Dateien mittels »#include«
Pfeil 10.2 Makros und Konstanten – »#define«
Pfeil 10.2.1 Symbolische Konstanten mit »#define«
Pfeil 10.2.2 Makros mit »#define«
Pfeil 10.3 Bedingte Kompilierung
Pfeil 10.4 Vordefinierte Präprozessor-Direktiven (ANSI C)
Pfeil 10.5 Ersetzung eines Makroparameters durch einen String
Pfeil 10.6 »#undef« – Makronamen wieder aufheben
Pfeil 10.7 Ausgeben von Fehlermeldungen – »#error«
Pfeil 10.8 »#pragma«


Rheinwerk Computing - Zum Seitenanfang

10.4 Vordefinierte Präprozessor-Direktiven (ANSI C) topZur vorigen Überschrift

Folgende vordefinierten Makros werden von ANSI C vorgeschrieben:


Tabelle 10.5 Vordefinierte Standard-Makros

Makroname Bedeutung
__LINE__

die Zeilennummer der aktuellen Zeile in der Programmdatei

__FILE__

der Name der Programmdatei

__DATE__

das Übersetzungsdatum der Programmdatei

__TIME__

die Übersetzungszeit der Programmdatei

__STDC__

das 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 sehen Sie 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, die C-Quelltexte erzeugen.

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


Tabelle 10.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).


Einen Präprozessortest auf C99-Kompatibilität können Sie somit wie folgt durchführen:

#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 // C99-kompatibler Quellcode.
#else
 // nicht C99-kompatibler Quellcode
#endif

Hier sehen Sie ein weiteres Beispiel mit dem Makro __func__, das sich prima zum Debuggen von Programmen eignet:

/* stdmakro.c */
#include <stdio.h>
#include <stdlib.h>

void eine_funktion(void) {
   printf("Name der Funktion: %s\n",__func__);
}

int main(void) {
   eine_funktion();
   return EXIT_SUCCESS;
}


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.

<< zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: C/C++






 C/C++


Zum Rheinwerk-Shop: Einstieg in C






 Einstieg in C


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern