0Pricing
C Academy · Lektion

#define-Konstanten

Verwenden Sie Präprozessor-Konstanten.

#define-Konstanten ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Was #define bewirkt

#define ist eine Präprozessor-Direktive, die ein Makro erstellt: einen Namen, den der Präprozessor vor der Kompilierung durch Text ersetzt.

Es wird häufig verwendet, um einem festen Wert wie einer Puffergröße oder einem Grenzwert einen lesbaren Namen zu geben.

#define MAX_LEN 256

Textersetzung

Ein Makro ist eine reine Textersetzung. Überall, wo MAX_LEN vorkommt, setzt der Präprozessor an seiner Stelle 256 ein.

Es gibt weder einen Typ noch Speicher; die Ersetzung erfolgt, bevor der Compiler den Code überhaupt sieht.

#include <stdio.h>
#define MAX_LEN 256
int main(void) {
    printf("%d\n", MAX_LEN);
    return 0;
}

Kein Semikolon

Ein häufiger Fehler besteht darin, ein #define mit einem Semikolon zu beenden.

Das Semikolon wird Teil des Ersetzungstextes und kann zu schwer verständlichen Fehlern führen. Lassen Sie es weg.

#define PI 3.14159     /* correct */
#define BAD 10;        /* wrong: semicolon is substituted too */

Eine Gleitkommakonstante definieren

Makros funktionieren für jedes Literal, auch für Gleitkommawerte.

Hier wird PI bei jeder Verwendung in die Flächenformel eingesetzt.

#include <stdio.h>
#define PI 3.14159
int main(void) {
    double r = 2.0;
    printf("%.2f\n", PI * r * r);
    return 0;
}

Makros für Array-Größen

Makros werden häufig verwendet, um die Größe von Arrays festzulegen, weil der Wert zur Kompilierzeit bekannt sein muss.

Durch die Verwendung eines Namens befindet sich die Größenangabe an einer einzigen, leicht änderbaren Stelle.

#include <stdio.h>
#define SIZE 5
int main(void) {
    int data[SIZE] = {1, 2, 3, 4, 5};
    printf("%d\n", data[SIZE - 1]);
    return 0;
}

Ausdrücke immer in Klammern setzen

Wenn ein Makro zu einem Ausdruck erweitert wird, setzen Sie diesen in Klammern.

Ohne Klammern kann die Operatorpriorität die Bedeutung verändern, wenn das Makro innerhalb eines größeren Ausdrucks verwendet wird.

#define WIDTH (4 + 2)   /* good */
#define BADW 4 + 2       /* risky: 10 * BADW becomes 10*4+2 */

Warum Klammern wichtig sind

Dieses Programm zeigt den Unterschied. Mit Klammern wird WIDTH als Ganzes multipliziert; ohne Klammern wird nur ein Teil multipliziert.

Die sichere Version gibt 60 aus, während die unsichere Erweiterung ein anderes Ergebnis berechnen würde.

#include <stdio.h>
#define WIDTH (4 + 2)
int main(void) {
    printf("%d\n", 10 * WIDTH);
    return 0;
}

String-Makros

Makros können auch für String-Literale stehen, was für feste Meldungen oder Versionsnamen praktisch ist.

Der Text wird exakt eingesetzt, einschließlich der Anführungszeichen.

#include <stdio.h>
#define APP_NAME "CoddyKit"
int main(void) {
    printf("Welcome to %s\n", APP_NAME);
    return 0;
}

#define und const

Ein Makro hat weder einen Typ noch eine Adresse; eine const-Variable besitzt beides und folgt den Regeln für den Gültigkeitsbereich.

Bevorzugen Sie const, wenn Sie Typsicherheit und gute Debugging-Möglichkeiten benötigen. Verwenden Sie #define für Konstanten zur Kompilierzeit, etwa für Array-Größen.

#define M_SIZE 10
const int c_size = 10;

Makros aufheben und Include-Guards

Mit #undef können Sie ein Makro entfernen. Makros bilden außerdem die Grundlage für Include-Guards, die das doppelte Einbinden verhindern.

Hier sehen Sie das klassische Guard-Muster, das am Anfang von Header-Dateien verwendet wird.

#ifndef CONFIG_H
#define CONFIG_H
/* header contents here */
#endif

Übliche Namensgebung

Makronamen werden traditionell in UPPER_CASE geschrieben.

Dadurch sind sie auf den ersten Blick als Präprozessor-Konstanten erkennbar, und Sie vermeiden leichter Namenskonflikte mit gewöhnlichen Variablen.

#include <stdio.h>
#define BUFFER_SIZE 1024
int main(void) {
    printf("%d\n", BUFFER_SIZE);
    return 0;
}

Schnelltest

Testen Sie Ihr Verständnis von Makros.

Zusammenfassung

#define erstellt Makros, die der Präprozessor als Text ersetzt – ohne Typ, ohne Semikolon und ohne Speicher.

Setzen Sie Ausdrücke in Klammern und bevorzugen Sie const für typsichere Werte. Verwenden Sie Makros nur für Anforderungen zur Kompilierzeit, etwa Array-Größen und Include-Guards.

Häufig gestellte Fragen

Ist die Lektion „#define-Konstanten“ kostenlos?

Ja — der vollständige Text von „#define-Konstanten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „#define-Konstanten“?

Verwenden Sie Präprozessor-Konstanten. Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C Academy zu starten?

Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „#define-Konstanten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?

Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Enums definieren
  2. Enum-Werte und Wertebereiche
  3. const-Variablen
  4. #define-Konstanten
← Zurück zu C Academy