1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

modularsieriung

  • sommeralex
  • 21. Juli 2005 um 10:17
  • Unerledigt
  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 21. Juli 2005 um 10:17
    • #1

    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

  • linken_harmy
    1
    linken_harmy
    Gast
    • 22. Juli 2005 um 14:19
    • #2

    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
    #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_ */
    Alles anzeigen

    Weiss nicht ob das dann geht, aber bei meinen class oder include problemen hat die methode mit dem zusammenfassen immer zum erfolg geführt...

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 22. Juli 2005 um 15:03
    • #3

    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).

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung