it-swarm.com.de

Erstellen Sie Ihre eigene Header-Datei in C

Kann jemand erklären, wie man eine Header-Datei in C mit einem einfachen Beispiel von Anfang bis Ende erstellt.

158
Anuragdeb3

foo.h

#ifndef FOO_H_   /* Include guard */
#define FOO_H_

int foo(int x);  /* An example function declaration */

#endif // FOO_H_

foo.c

#include "foo.h"  /* Include the header (not strictly necessary here) */

int foo(int x)    /* Function definition */
{
    return x + 5;
}

main.c

#include <stdio.h>
#include "foo.h"  /* Include the header here, to obtain the function declaration */

int main(void)
{
    int y = foo(3);  /* Use the function here */
    printf("%d\n", y);
    return 0;
}

Mit GCC kompilieren

gcc -o my_app main.c foo.c
265
#ifndef MY_HEADER_H
# define MY_HEADER_H

//put your function headers here

#endif

MY_HEADER_H Dient als Schutz vor doppelter Inklusion.

Für die Funktionsdeklaration müssen Sie nur die Signatur definieren, dh ohne Parameternamen, wie folgt:

int foo(char*);

Wenn Sie wirklich möchten, können Sie auch den Bezeichner des Parameters einfügen, dies ist jedoch nicht erforderlich, da der Bezeichner nur im Hauptteil (Implementierung) einer Funktion verwendet wird, der im Fall eines Headers (Parametersignatur) fehlt.

Dies deklariert die Funktion foo, die einen char* Akzeptiert und einen int zurückgibt.

In Ihrer Quelldatei hätten Sie:

#include "my_header.h"

int foo(char* name) {
   //do stuff
   return 0;
}
24
Flavius

myfile.h

#ifndef _myfile_h
#define _myfile_h

void function();

#endif

myfile.c

#include "myfile.h"

void function() {

}
8
TommyGunn32

header-Dateien enthalten Prototypen für Funktionen, die Sie in einer .c- oder .cpp/.cxx-Datei definieren (abhängig davon, ob Sie c oder c ++ verwenden). Sie möchten # ifndef/# definitions um Ihren .h-Code platzieren, damit die Prototypen nur einmal enthalten sind, wenn Sie dasselbe .h zweimal in verschiedenen Teilen Ihres Programms einfügen.

client.h

#ifndef CLIENT_H
#define CLIENT_H

short socketConnect(char *Host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);


#endif /** CLIENT_H */

Dann würden Sie das .h in eine .c-Datei wie folgt implementieren:

client.c

#include "client.h"

short socketConnect(char *Host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize) {
 short ret = -1;
 //some implementation here
 return ret;
}
5
djsumdog