mehrere source dateien



  • Hallo,
    ich habe eine typische Anfängerfrage:
    wie kann ich code in einem Program in verschiedene Dateien aufteilen?
    Speziell wenn ich eine struct im hauptprogram.c als extern deklariert und im hauptprogram.h definiert habe; wie kann ich sie in anderen files.c erreichen, im selben program ? ist das compiler abhängig (benutze lcc-win32 wedit)?
    Danke



  • ja, das ist compilerabhängig.
    ich arbeite mit visual c++. dort bindet man die einzelnen dateien einfach im projekt ein. wenn du bei deinem compiler projekte erstellen kannst, müsste das auch gehen.
    du musst dann halt in jeder cpp die header includen und funktionsprototypen deklarieren.....

    hoffe, des stimmt alles so...



  • ja, so hab ich das auch gedacht, aber wenn ich die .h dateien mehrfach einbinde meldet der compiler mir "...too deeply nested-error"
    verzweifel.



  • Original erstellt von dev_MAddoX:
    ja, das ist compilerabhängig.

    LOL, wie kommst Du denn auf die Idee?

    Im Prinzip brauchts nur den Header in beiden Dateien zu #includen, beide Dateien übersetzen und Zusammenlinken. Da ist nichts compilerabhängiges dran.



  • ... eine struct im hauptprogram.c als extern deklariert und im hauptprogram.h definiert habe...

    😕 😕 😕

    [ Dieser Beitrag wurde am 28.05.2003 um 19:02 Uhr von RTC editiert. ]



  • ... eine struct im hauptprogram.c als extern deklariert und im hauptprogram.h definiert habe...

    ja, wie gesagt bin ich blutiger anfänger. es schien am einfachsten eine struct zu definieren und als extern zu deklarieren, damit verschiedene procedures drauf zugreifen können. in die struct wird ein file eingelesen und von den procedures "bearbeitet" (ändern/speichern etc).
    gibt es eine einfachere/elegantere lösung ?



  • globale variablen sind schlecht

    denke nach ob du diese struktur wirklich global brauchst, wenn ja:

    xxx.c
    struct FOO foo;

    xxx.h
    extern struct FOO foo;

    in der xxx.h kommt die DEKLARATION und in xxx.c kommt die DEFINITION (siehe 'One Definition Rule')


Anmelden zum Antworten