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

modularisierung spukt..

  • sommeralex
  • 20. Juli 2005 um 23:13
  • Unerledigt
  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 20. Juli 2005 um 23:13
    • #1

    hallo!

    C spukt. und ich hab den beweis, vielleicht sieht jemand den wald, ich sehe ihn vor läuter bäumen leider nicht.

    mein programm ist "modularisiert". daher: ich hab ein main.c file, (darin die main methode) und ein extern.c file. darin eine beispielmethode die ich aus main aufrufen möchte. Zusätzlich hab ich in extern.h (header datei) ein struct. dieses include ich in extern.c. in main include ich extern.h und alles funktioniert.

    soweit, sogut.

    wenn ich das ganze jetzt wiederhole, also ein extern2.h file mache + extern2.c file, diese sauber include, (also extern2.h in extern2.c include und extern2.h in main.c inklude, GEHT DAS NICHT.

    das ist ein witz.

    auf http://www.learnclip.com/cspukt.zip das beispiel. bitte um hilfe.

    lg, danke, alex

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 20. Juli 2005 um 23:17
    • #2

    --- extern2.h beispiel code ---


    struct names_st{

    char first[10];


    };

    //typedef names_st names;

    --- code ende ---

    solange "
    typedef names_st names;" ausgeblendet wird, passt alles. aber wehe es wird aktiviert. funktioniert es nicht. obwohl ich ein ähnliches dummy struct in extern.h mit selber syntax habe! ) [typedef type varname;]

  • Alex_K
    15
    Alex_K
    Mitglied
    Reaktionen
    10
    Punkte
    2.465
    Beiträge
    487
    • 20. Juli 2005 um 23:25
    • #3

    du bekommst eh eine schöne fehlermeldung:

    Code
    gcc -o main main.c extern.c extern2.c
    In file included from main.c:5:
    extern2.h:10: error: Syntaxfehler before "names"
    
    
    ...

    wenn du dir die zeile genauer anschaust sollte das folgendes stehen:

    Code
    typedef [i][b]struct[/b][/i] names_st names[i][b];[/b][/i]

    Total world domination is proceeding as planned.

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 20. Juli 2005 um 23:47
    • #4

    dieses main/extern beispiel hab ich nur gepostet, weil bei meinem projekt diese modularisierung nicht funktioniert, und hier habe ich bestimmt kein "struct" syntax falsch geschrieben: http://www.learnclip.com/LearnClip.zip

    ich vermute, dass es aufgrund der prozeduralen vorgangsweise des compilers fehler in der registrierung (speicherreservierung im register) der struct variabeln gibt.

    BEISPIEL:

    extern1 file --

    struct a {

    struct b

    }

    extern 2 file --

    struct b {

    struct a

    }

    main file --

    include extern 1 - fehler, weil struct b noch nicht bekannt


    gibt es da eine schöne lösung? ein pattern?

    trotzdem danke für deine hilfe! im folgenden die fehlerausgabe (in lc.c) befindet sich die main zum ausführen.


    F:\Programme\PellesC\Projects\LearnClip\LC.c(42): warning #1039: [ISO] No newline at end of file.
    F:\Programme\PellesC\Projects\LearnClip\LC_BOOK.h(7): error #2078: Invalid struct field declarations.
    F:\Programme\PellesC\Projects\LearnClip\LC_BOOK.h(7): error #2001: Syntax error; found 'configuration' expecting '}'.
    F:\Programme\PellesC\Projects\LearnClip\LC_BOOK.h(10): warning #2099: Missing type specifier.
    F:\Programme\PellesC\Projects\LearnClip\LC_BOOK.h(10): error #2001: Syntax error; found '*' expecting ';'.
    F:\Programme\PellesC\Projects\LearnClip\LC_BOOK.h(10): warning #2099: Missing type specifier.
    F:\Programme\PellesC\Projects\LearnClip\LC_BOOK.h(13): error #2156: Unrecognized declaration.
    F:\Programme\PellesC\Projects\LearnClip\LC_UNIT.h(6): error #2121: Redeclaration of 'unit'.
    F:\Programme\PellesC\Projects\LearnClip\LC_UNIT.h(25): error #2001: Syntax error; found 'configuration' expecting '}'.
    F:\Programme\PellesC\Projects\LearnClip\LC_UNIT.h(26): error #2001: Syntax error; found '_unit' expecting ';'.
    F:\Programme\PellesC\Projects\LearnClip\LC_UNIT.h(26): warning #2099: Missing type specifier.
    F:\Programme\PellesC\Projects\LearnClip\LC_UNIT.h(26): error #2082: Invalid initialization type; found 'void *' expected 'int'.
    F:\Programme\PellesC\Projects\LearnClip\LC_UNIT.h(28): error #2156: Unrecognized declaration.

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 21. Juli 2005 um 04:53
    • #5

    hm... also wie ich das sehe, haben sowohl struct a als auch struct b eine unendlichen speicheranforderung, kein wunder dass das so net geht. evtl solltest da auf pointer auf die structs zurückgreifen?

    [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!

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 21. Juli 2005 um 08:55
    • #6

    unendliche Speicheranforderung?

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 21. Juli 2005 um 12:13
    • #7

    stell dir vor, du willst speicher allozieren für diese struktur.
    Wenn struct a nicht in b enthalten ist, schauts so aus:

    Code
    struct a {
      struct b {
        ...
      }
      ...
    }


    Bei deinem Aufbau alloziert er folgendes:

    Code
    struct a {
      struct b {
        struct a {
          struct b {
            struct a {
    ...

    [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!

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 21. Juli 2005 um 13:36
    • #8

    schau dir mal bitte mein anderes (neueres) beispiel an! ich bin mir jetzt nicht sicher, ob wir das selbe meinen, und wenn ja, warum ich nicht structs in structs haben kann. - denn das ist definitiv möglich.

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 21. Juli 2005 um 15:20
    • #9

    es geht ja auch nicht darum, daß es nicht möglich ist, sondern daß er eine endlos schleife produziert bei der initialisierung.

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 21. Juli 2005 um 15:39
    • #10

    alles klar! vielen dank!

  • 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

Rechtliches

Impressum

Datenschutzerklärung