Galileo Computing < openbook > Galileo 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

Download:
- ZIP, ca. 10,6 MB
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
Galileo 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«


Galileo 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;
}


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Einstieg in C++






 Einstieg in C++


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


Zum Katalog: C/C++






 C/C++


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Coding for Fun







 Coding for Fun 


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 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.


[Galileo Computing]

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