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

Modulares Programmieren

  • seg2
  • 23. Oktober 2006 um 22:40
  • Unerledigt
  • seg2
    8
    seg2
    Mitglied
    Punkte
    655
    Beiträge
    102
    • 23. Oktober 2006 um 22:40
    • #1

    Bis jetzt habe ich in C immer mehr oder weniger unsauber dahinprogrammiert.
    Jetzt würde ich gerne wissen, wie man am besten "modular programmiert".
    Das heißt, eine sinnvolle Auftrennung der Anwendung in abgeschlossene Teilbreiche, damit man diese dann problemlos einzeln weiterverwenden könnte.

    Inkludiert man am besten die c-Dateien selbst oder doch die header-Dateien in denen die Funktionsrümpfe mit "extern" deklariert sind?
    Was ist mit mehrfacher Inkludierung? Das könnte eventuell Probleme geben, nicht? Hilft da wirklich einfach ein "ifndef ... define ... endif" Block?

    Ein Nachteil ist ja auch, dass man beim Aufteilen einer Anwendung im Makefile nicht mehr sowas wie "gcc *.c" verwenden kann, sondern immer speziell anpassen muss.

    Ich würde mich über Tipps bzw. Links freuen, da ich nix gscheites gefunden habe.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 24. Oktober 2006 um 00:00
    • #2
    Zitat von seg2

    Inkludiert man am besten die c-Dateien selbst oder doch die header-Dateien in denen die Funktionsrümpfe mit "extern" deklariert sind?


    Üblicherweise nur Headers, der Linker soll auch ein bissi arbeiten dürfen :) Außerdem, je weniger Code auf einmal neu kompiliert werden muß, umso besser. (Wenn ich das richtig im Kopf hab, ist extern übrigens fast nie nötig, da default. Ist aber eine nette Annotation, also warum nicht.)

    Du kannst die Funktionen, die nur innerhalb einer Source-Datei relevant sind, übrigens als static deklarieren, dann kann man nicht von außerhalb gegen sie linken, selbst wenn man wollte. (Wiederum wenn ich das richtig im Kopf hab... Schwimmen macht müde.)

    Zitat

    Was ist mit mehrfacher Inkludierung? Das könnte eventuell Probleme geben, nicht? Hilft da wirklich einfach ein "ifndef ... define ... endif" Block?


    Ja, das hilft wirklich, wieso auch nicht? Solang ein Header übrigens nur Deklarationen ohne Definitionen oder Makros enthält, ist mehrfache Inkludierung übrigens kein Problem, aber die Guards kosten nichts.

    Zitat

    Ein Nachteil ist ja auch, dass man beim Aufteilen einer Anwendung im Makefile nicht mehr sowas wie "gcc *.c" verwenden kann, sondern immer speziell anpassen muss.


    Der Vorteil von make ist ja gerade, daß nicht immer alles neu übersetzt werden muß. Aber ja, Dependencies verwalten ist ein Hund. Wenn man aber mal wirklich alles neu builden will, ein "make clean; make" tippt sich fast so schnell :)

    *plantsch*

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 24. Oktober 2006 um 00:37
    • #3
    Zitat von Plantschkuh!

    Der Vorteil von make ist ja gerade, daß nicht immer alles neu übersetzt werden muß. Aber ja, Dependencies verwalten ist ein Hund. Wenn man aber mal wirklich alles neu builden will, ein "make clean; make" tippt sich fast so schnell :)


    Genau für die Verwaltung der Dependencies gibt es ja "gcc -MM foo.c"

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • seg2
    8
    seg2
    Mitglied
    Punkte
    655
    Beiträge
    102
    • 24. Oktober 2006 um 07:39
    • #4

    Also defines nie ins header-file?

    -MM muss ich mal probieren. - Nimmt der Compiler dann automatisch alle Abhängigkeitsdateien mit rein oder wie ist das zu verstehen?

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 24. Oktober 2006 um 10:57
    • #5
    Zitat von seg2

    Also defines nie ins header-file?

    -MM muss ich mal probieren. - Nimmt der Compiler dann automatisch alle Abhängigkeitsdateien mit rein oder wie ist das zu verstehen?


    Doch, Defines, die auch außerhalb (also in anderen Sourcefiles bzw. "Modulen") Sinn machen, in die Headerdatei.
    -MM gibt nur die Dependencies im Format wie bei einem Makefile aus, was aber eben die Verwaltung der Dependencies vereinfacht, weil sie sich auf maximal copy&paste reduziert.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 24. Oktober 2006 um 12:53
    • #6
    Zitat von jeuneS2

    -MM gibt nur die Dependencies im Format wie bei einem Makefile aus, was aber eben die Verwaltung der Dependencies vereinfacht, weil sie sich auf maximal copy&paste reduziert.


    Naja, wenn ich Libraries mit vielen Headern verwende (und das muß ich persönlich nun mal), ist nach -MM noch ein wenig Postprocessing angesagt, also ist nichts mit copy & paste. Außerdem muß man gcc -MM nach Änderungen auch händisch laufen lassen, das ist nicht der Gipfel der Automation :) Sicher ein Schritt in die richtige Richtung, aber einige Sachen bleiben doch ungelöst.

    *plantsch*

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    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