Header File

Search IconIcon to open search

Header

Eine Header Datei ist eine Datei, welche in der Regel Typdefinitionen beinhaltet, als auch Funktionsdefinitionen, welche in Source Dateien definiert werden, aber auch direkt im Header definiert werden können.

Headerguards

Headerguards sind dazu da um Linkerprobleme durch mehrfache definierung von Typen, Strukturen, Funktionen zu verhindern, wenn mehrere Dateien included werden.

pragma once

Dies ist eine moderne und simple Art und Weise Linker Probleme zu verhindern, jedoch ist es nicht garantiert, dass ältere C/C++ standards diesen auch unterstützen. Es wird jedoch von den meisten Compilern unterstützt und ist z.B.: seit einer Weile in dem C++ Standard enthalten.

Student.h

 1#pragma once
 2
 3typedef struct{
 4	char Name[128];
 5	unsigned char Alter;
 6	char Fakultät[128];
 7	char Studiengang[128];
 8	unsigned char Semester;
 9}Student;
10
11void printHelloWorld();

Student.c

1#include "Student.h"
2void printHelloWorld(){
3	printf("Hello World!\n");
4}

alte Headerguardformat

Dies ist die alte Methode um Headerguards zu erstellen um Linker Probleme zu umgehen.

Student.h

 1#ifndef STUDENT_HEADER_GUARD
 2#define STUDENT_HEADER_GUARD
 3
 4typedef struct{
 5	char Name[128];
 6	unsigned char Alter;
 7	char Fakultät[128];
 8	char Studiengang[128];
 9	unsigned char Semester;
10}Student;
11
12void printHelloWorld();
13#endif

Student.c

1#include "Student.h"
2void printHelloWorld(){
3	printf("Hello World!\n");
4}

#import

Obwohl man #import verwenden kann, ist es nicht empfohlen, da es unklare Versprechungen macht und nicht unbedingt von jedem Compiler unterstützt wird. Ebenso ist es nicht part von dem C Standard, Deprecated und gehört eigentlich zu Objective-C, dies ist Apple’s alternative zu C++ und ist im Vergleich zu C ein deutlicher Unterschied.

Es ist Objective-C nicht C, das ist ein deutlicher unterschied.

Student.h

1typedef struct{
2	char Name[128];
3	unsigned char Alter;
4	char Fakultät[128];
5	char Studiengang[128];
6	unsigned char Semester;
7}Student;
8
9void printHelloWorld();

Student.c

1#import "Student.h"
2void printHelloWorld(){
3	printf("Hello World!\n");
4}

Interactive Graph