C typedef erklärt: Code vereinfachen mit benutzerdefinierten Typnamen
Die C-Programmiersprache bietet das Schlüsselwort typedef, mit dem Sie einem Typ einen neuen Namen geben können. Beispiel für die Definition von BYTE für Ein-Byte-Zahlen:
typedef unsigned char BYTE;
Nach dieser Typdefinition kann der Bezeichner BYTE als Abkürzung für den Typ unsigned char verwendet werden:
BYTE b1, b2;
Konventionell werden Großbuchstaben für diese Definitionen verwendet, um daran zu erinnern, dass der Typname tatsächlich eine symbolische Abkürzung ist. Sie können aber auch Kleinbuchstaben verwenden:
typedef unsigned char byte;
typedef mit benutzerdefinierten Datentypen
Sie können typedef verwenden, um Ihren benutzerdefinierten Datentypen einen Namen zu geben. Zum Beispiel mit Strukturen:
Beispiel: typedef mit struct
#include <stdio.h>
#include <string.h>
typedef struct Books {
char title[50];
char author[50];
char subject[100];
int book_id;
} Book;
int main() {
Book book; // Kein "struct" nötig
strcpy(book.title, "C Programming");
strcpy(book.author, "Nuha Ali");
strcpy(book.subject, "C Programming Tutorial");
book.book_id = 6495407;
printf("Titel: %s\n", book.title);
printf("Autor: %s\n", book.author);
printf("Thema: %s\n", book.subject);
printf("ID: %d\n", book.book_id);
return 0;
}
Ausgabe:
Titel: C Programming
Autor: Nuha Ali
Thema: C Programming Tutorial
ID: 6495407
typedef vs. #define
#define ist eine C-Präprozessor-Direktive, die ebenfalls Aliase für Datentypen definieren kann, ähnlich wie typedef, aber mit folgenden Unterschieden:
typedef ist darauf beschränkt, symbolische Namen für Typen zu vergeben, während #define auch Aliase für Werte definieren kann (z. B.
#define ONE 1).typedef wird vom Compiler interpretiert, während #define-Anweisungen vom Präprozessor verarbeitet werden.
Beispiel: #define für Werte
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int main() {
printf("Wert von TRUE: %d\n", TRUE);
printf("Wert von FALSE: %d\n", FALSE);
return 0;
}
Ausgabe:
Wert von TRUE: 1
Wert von FALSE: 0
Weitere typedef-Beispiele
// Funktionszeiger
typedef int (*compare_func)(const void*, const void*);
// Array-Typ
typedef int IntArray[10];
// Zeiger-Typ
typedef char* String;
// Struktur mit typedef direkt
typedef struct {
int x, y;
} Point;
Point p1 = {10, 20};
Best Practice: Verwenden Sie typedef für Typ-Aliase und #define für Konstanten/Makros. Vermeiden Sie #define für Typdefinitionen, da dies zu subtilen Fehlern führen kann (z. B. bei Zeigern: #define PTR int* vs typedef int* PTR).
C Sprache
- C# Hello World – Ihre erste C#-Anwendung erstellen
- C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
- Lean Machines für Weltklasse-Fertigung und Instandhaltung: Praktischer Leitfaden zur Anlagenexzellenz
- ISA veröffentlicht aktualisierte 3. Auflage von Control Systems Safety Evaluation & Reliability
- Neues Buch: The OEE Primer – Gesamtanlageneffektivität, Zuverlässigkeit & Instandhaltbarkeit meistern
- Buchrezension: Digitise or Die – Ein Blueprint für IoT-getriebene Transformation
- Menschlichkeit im Zeitalter disruptiver Technologie bewahren
- Top 17 Programmierbücher 2021, um Ihre Coding-Skills zu verbessern
- C-Strukturen meistern: Komplexe Daten effizient organisieren
- C typedef erklärt: Code vereinfachen mit benutzerdefinierten Typnamen