Einbinden einer Header-Datei aus einem anderen Verzeichnis

Lesezeit: 2 Minuten

Mannys Benutzeravatar
Manni

Ich habe ein Hauptverzeichnis A mit zwei Unterverzeichnissen B und C.

Verzeichnis B enthält eine Header-Datei structures.c:

#ifndef __STRUCTURES_H
#define __STRUCTURES_H
typedef struct __stud_ent__
{
    char name[20];
    int roll_num;
}stud;
#endif

Verzeichnis C enthält main.c Code:

#include<stdio.h>
#include<stdlib.h>
#include <structures.h>
int main()
{
    stud *value;
    value = malloc(sizeof(stud));
    free (value);
    printf("working \n");
    return 0;
}

Aber ich bekomme einen Fehler:

main.c:3:24: error: structures.h: No such file or directory
main.c: In function ‘main’:
main.c:6: error: ‘stud’ undeclared (first use in this function)
main.c:6: error: (Each undeclared identifier is reported only once
main.c:6: error: for each function it appears in.)
main.c:6: error: ‘value’ undeclared (first use in this function)

Was ist der richtige Weg, um die einzufügen structures.h Datei hinein main.c?

  • Was ist der Compiler, den Sie verwenden? Für gcc sollten Sie sich das Flag -I ansehen (siehe Handbuchseite). Informationen zu anderen Compilern finden Sie in der Dokumentation.

    – Ed heilen

    28. September 2011 um 9:59 Uhr

Beim Verweis auf Header-Dateien relativ zu Ihrer c-Datei, die Sie verwenden sollten #include "path/to/header.h"

Die Form #include <someheader.h> wird nur für interne Header oder explizit hinzugefügte Verzeichnisse verwendet (in gcc mit der -I Möglichkeit).

  • Bitte beachten Sie, dass dies – theoretisch – plattform-/compilerspezifisch ist. “Die benannte Quelldatei wird in einer implementierungsdefinierten Weise gesucht.” (ISO/IEC 9899 zu ‘#include “file”‘)

    – undur_gongor

    28. September 2011 um 10:55 Uhr

Benutzeravatar von Jeegar Patel
Jeegar Patel

schreiben

#include "../b/structure.h"

anstelle von

#include <structures.h>

dann geh in c ins verzeichnis & kompiliere deine main.c mit

gcc main.c

Benutzeravatar von Timandi Vlad
Timandi Vlad

Wenn Sie an einem Makefile-Projekt arbeiten oder Ihren Code einfach über die Befehlszeile ausführen, verwenden Sie

gcc -IC main.c

wo -I Option fügt Ihre hinzu C Verzeichnis in die Liste der Verzeichnisse, die nach Header-Dateien durchsucht werden sollen, damit Sie sie verwenden können #include "structures.h"überall in Ihrem Projekt.

Wenn Sie das Befehlszeilenargument verwenden möchten, können Sie es angeben gcc -idirafter ../b/ main.c

dann müssen Sie in Ihrem Programm nichts tun.

1411940cookie-checkEinbinden einer Header-Datei aus einem anderen Verzeichnis

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy