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
#operator1
Ersetzt innerhalb eines Makros einen Makrop­ara­meter durch eine konstante Zeiche­nkette, die den Wert des Parameters enthält.
## operator1
Erzeugt ein einzelnes Token aus zwei hinter­ein­ander stehenden Tokens.
#pragma1
Gibt Compiler- und System­abh­ängige Inform­ationen an den Compiler
#error1,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
Betrie­bss­yst­ema­bhä­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:
printf­("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!
 

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
          C program Cheat Sheet

          More Cheat Sheets by TimSch

          C - printf/scanf Cheat Sheet
          C- Grundlagen zu Variablen Cheat Sheet