Show Menu
Cheatography

Präprozessorbefehle Cheat Sheet by

Übersicht

#include
Fügt Text aus einer anderen Quellt­ext­datei ein.
#define
Definiert ein Makro
#undef
Entfernt ein Makro
#if
Bedingte Compil­ierung in Abhäng­igkeit der nachst­ehenden Bedingung
#elif2
Altern­ative Compil­ierung in Abhäng­igkeit der nachst­ehenden Bedingung, wenn die Bedingung des vorste­henden #if, #elif, #ifdef oder #ifndef nicht erfüllt ist. (Also wie else if).
defined1
Liefert eine 1, wenn der nachst­ehende Makroname definiert ist, sonst eine 0.
Kann nur zusammen mit #if oder #elif verwendet werden.
#ifdef
Bedingte Compil­ierung in Abhäng­igkeit, ob ein Makroname definiert ist.
#ifndef
Bedingte Compil­ierung in Abhäng­igkeit, ob ein Makroname nicht definiert ist.
#else
Altern­ative Compil­ierung, wenn die Bedingung des vorste­henden #if, #elif, #ifdef oder #ifndef nicht erfüllt ist
#endif
Beendet den Block mit der bedingten Compil­ierung
#line
Liefert eine Zeilen­nummer für Compil­erm­eld­ungen
#opera­tor1
Ersetzt innerhalb eines Makros einen Makrop­ara­meter durch eine konstante Zeiche­nkette, die den Wert des Parameters enthält.
## operat­or1
Erzeugt ein einzelnes Token aus zwei hinter­ein­ander stehenden Tokens.
#pragma1
Gibt Compiler- und System­abh­ängige Inform­ationen an den Compiler
#error­1,3
Erzeugt einen Fehler während der Compil­ierung mit der angege­benen Fehler­mel­dung.
1 Neu in C99.

2 Gehört nicht zum Standa­rd-C, obwohl es von vielen Compilern unters­tützt wird.
3#pragma Befehle können nur entweder in der obersten Ebene vor der ersten Deklar­ation oder innerhalb eines Blockes vor der ersten Deklar­ation eingesetzt werden!

Vordef­inierte Makros

__LINE__
Zeilen­nummer innerhalb der aktuellen Quellc­ode­datei
__FILE__
Name der aktuellen Quellc­ode­datei
__DATE__
Datum, wann das Programm kompiliert wurde (als Zeiche­nkette)
__TIME__
Uhrzeit, wann das Programm kompiliert wurde (als Zeiche­nkette)
__STDC__
Liefert eine 1, wenn sich der Compiler nach Standard-C richtet
__STDC­_VE­RSION__
Liefert die Zahl
  199409L, wenn sich der Compiler nach C95 richtet
  1999901L, wenn sich der Compiler nach C99 richtet
sonst ist dieses Makro nicht definiert
Betriebssystemabhängige vordef­inierte Makros
__unix__
UNIX System
__unix
UNIX System
__WIN32__
MS Windows ab 95
_Windows
Zielsystem MS Windows
__linux__
Linux-­System
__Free­BSD__
FreeBSD
__Open­BSD__
OpenBSD
 

Einfügen und Definieren (Texte­rse­tzu­ngen)

#include
#include <st­dio.h> //Aus Includ­eve­rze­ichnis
#include "­pro­jek­t.h­" //Aus akt. Verzei­chnis
#define
#define PI 3.14159265
int mailn()
{   printf­("PI = %f\n", PI);
  return 0
}

//Ersetzt das PI im Queltext durch 3.14159265
#undef
#undef PI
# operator
#define Makro(a) printf­(#a)
//ersetzt bspw.
Makro­(7);
//durch:
print­f("7­");
## Operator
#define Makro(i) temp ## i
int temp1, temp2;
Makro(1) = 5;
//Wird zu
temp1 = 5;

Bedingte Kompil­ierung

#if
#if defined PI
//Komp­iliert diesen Bereich nur, wenn PI definiert wurde.
#endif
#if _Windows
//Komp­iliert diesen Bereich nur in Windows.
#endif
#ifndef
#ifndef projekt_h
//Komp­iliert diesen Bereich nur, wenn projekt_h noch nicht definiert wurde
#endif
#ifdef
#ifdef projekt_h
//Komp­iliert diesen Bereich nur, wenn projekt_h definiert wurde
#endif
#else
#ifdef DEBUG
//Komp­iliert diesen Bereich nur, wenn DEBUG definiert wurde
#else
//Anso­nsten wird dieser Bereich kompiliert
#endif
#endif muss am Ende von jedem Beding­ung­sblock stehen!

Compil­erb­ezogene Befehle

#line
#line 12345 "­Neu­er_­Dat­ein­ame.c"
printf­("Dieser Text steht in Zeile %d in Datei %s. \n", __LINE__, __FILE­__);

//Gibt "­Dieser Text steht in Zeile 12345 in Datei Neuer_­Dat­ein­ame.c" aus.
Egal in welcher Datei und welcher Zeile der Code wirklich steht.
#pragma
#pragma FENV_A­CCESS ON
//Weist den Compiler an, beim Kompil­ieren Überwa­chungen & Exceptions rund um Fließk­omm­a-A­rit­hmetik einzub­auen.
#error
#ifndef Labelname
#error Labelname ist nicht definiert!
#endif
//Gibt einen Compil­erf­ehler aus, wenn Labelname nicht definiert wurde.
#pragma Befehle können nur entweder in der obersten Ebene vor der ersten Deklar­ation oder innerhalb eines Blockes vor der ersten Deklar­ation eingesetzt werden!

Help Us Go Positive!

We offset our carbon usage with Ecologi. Click the link below to help us!

We offset our carbon footprint via Ecologi
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          C Reference Cheat Sheet

          More Cheat Sheets by TimSch

          C - Kontrollstrukturen Cheat Sheet