Hallo! Hoffentlich kann mir hier jemand helfen, seit 2 Tagen stets das selbe Dilemma :distur: :
Wie kann ich, wenn ich mehrere files.c habe, welche variablen vom typ struct haben, es ermöglichen, dass ein typ struct einer file a den zeiger struct einer file b und umgekehrt, enthält?
---- extern1.c ----
#include "extern1.h"
#include "extern2.h" //damit apfel gefunden wird
---- extern1.h ----
typedef struct w wurm;
struct w{
apfel *a;
};
---- extern2.c ----
#include "extern2.h"
#include "extern1.h" //damit wurm gefunden wird
---- extern2.h ----
typedef struct a apfel;
struct a{
wurm *w;
};
---- main.c ---- (reines dummy) hier möchte ich dann wurm u apfel verwenden, doch soweit kommt es erst gar nicht, aufgrund unten angeführter fehlermeldung.
#include "extern.h"
#include "extern2.h"
#include <stdio.h>
int main()
{
return 0;
};
---- ende ----
Compiler Fehlermeldung:
C:\Program Files\PellesC\Projects\structi\extern1.c(1): warning #1039: [ISO] No newline at end of file.
C:\Program Files\PellesC\Projects\structi\extern1.h(6): error #2078: Invalid struct field declarations.
C:\Program Files\PellesC\Projects\structi\extern1.h(6): error #2001: Syntax error; found 'apfel' expecting '}'.
C:\Program Files\PellesC\Projects\structi\extern1.h(8): error #2156: Unrecognized declaration.
*** Error code: 1 ***
Bin für jede erdenkliche Hilfe dankbar!
LG Alex
modularsieriung
-
-
also wenn ma typedefs oder ähnliches überkreuz verwendet (also in mehreren Dateien) dann hab ich immer ein definitions.h gemacht in dem alle typedefs drin sind, das ist oftmals problematisch mit dem include in manchen c-files die werden dann nämlich doppelt inkludiert wenn man nicht aufpasst. also probier mal die definitions von den typedefs in eine header zu legen und dann inkludierst du einfach in die c-files nur das #include "definitions.h"
das file selbst könnte dann vielleicht so aussehen:Code
Alles anzeigen#ifndef _DEFINITIONS_H_ #define _DEFINITIONS_H_ typedef struct w wurm; typedef struct a apfel; struct a{ wurm *w; }; struct w{ apfel *a; }; #endif /* _DEFINITIONS_H_ */
Weiss nicht ob das dann geht, aber bei meinen class oder include problemen hat die methode mit dem zusammenfassen immer zum erfolg geführt...
-
Ich versteh diesen typedef-fetischismus irgendwie net ganz... was tut daran so weh, einfach überall struct a statt nur a zu schreiben? Dann weiss man wenigstens, woran man ist (und erspart sich so Absurditäten wie ungarische Notation).
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!