Verknüpfen .h-Dateien mit .c mit #ifdef-header-guards

im Probleme verknüpfen .h und .c-Dateien, das habe ich auch gelesen, einige threads zu diesem problem und alle von Ihnen ist etwas vage und noch immer kann ich nicht begreifen, das Konzept von es, und ich habe eine Menge der Verlinkung Probleme, Sagen, ich habe b.c-und b -.h, die ich verwenden in einem.c, und ich bin verwirrt, ob b.h beide ein.c-und b -.c cuz b.c selbst muss wissen, die Struktur definiert in b ist.h, ich habe einige Funktion, die hat Ihr Vorbild in b ist.h und ist in b.c, die auch die Struktur in b ist.h, im bin nicht mit b.h in b ist.c cuz, was ich wissen b.h ist mehr wie eine Schnittstelle zu einer.c, die die Funktionen in b haben.c... Hier ein klarer Beispiel

b.h-Datei

typedef struct{
int x, y;
}myStruct;

void funct1(myStruct);
void funct2(myStruct);

b.c-Datei

void funct1(myStruct x)
{
    //do something
}

void funct2(myStruct y)
{
     //do something
} 

ein.c-Datei

#include "b.h"

int main()
{
myStruct x;
  funct1(x);
  funct2(y);
return 0;
}

Ausgeführt wird der Befehl in cygwin: gcc b.c ein.c -g

Nun der verwirrende Teil, ich habe eine Verknüpfung Fehler, worin, wenn b ein.c compiliert es nicht erkennen kann, die Struktur und die Prototypen in b ist.h. Cuz alle ich weiß ist, dass b ist.h wird verwendet, um den link b.c aus ein.c, aber wenn die beiden .c kompiliert, es scheint, dass b.c kann nicht finden, Ihre Verteilung und Prototypen,

Warum habe ich nicht: b.h in b ist.c?
Antwort: Cuz, was ich wissen, b ist.h ist bereits enthalten.c und wenn ich es wieder in b.c, ich werde tun, Doppel-Einschlüsse <--- das ist, was ich lernen so weit und ich weiß, es ist #ifdef, aber es scheint funktioniert es nicht, vielleicht, ich weiß noch nicht, wie es zu benutzen, wenn Sie wissen, fühlen Sie bitte sich frei, dies zu diskutieren.

Wenn Sie eine Idee haben, wie man über das fühlen Sie sich frei, mir zu sagen einige.

gibt es eine #ifdef-Direktive, aber ich kann nicht scheinen, um eine Idee, wie dies zu tun.

HINWEIS: nehmen Sie an, DASS ALLE OBEN genannten CODES IST SYNTAKTISCH KORREKT, wenn es alle falsch geschriebenen Wort bitte ignorieren, ich bin nur nach der Einschlüsse zwischen .h und .c

InformationsquelleAutor lemoncodes | 2013-01-12

Schreibe einen Kommentar