Wie teilt man ein C-Programm in mehrere Dateien auf?

Lesezeit: 3 Minuten

Benutzeravatar von amin
Amin

Ich möchte meine C-Funktionen in 2 separate .c-Dateien schreiben und meine IDE (Code::Blocks) verwenden, um alles zusammen zu kompilieren.

Wie richte ich das in Code::Blocks ein?

Wie rufe ich Funktionen in einem auf .c Datei aus der anderen Datei?

  • Die Leute müssen wissen, welche IDE Sie verwenden, um Ihnen zu sagen, wie Sie etwas darin tun können.

    – J.Taylor

    26. Februar 2011 um 17:54 Uhr

  • Ich sehe nicht, wie dies möglicherweise vager sein könnte. Hast du schon was probiert? Kennen Sie die C-Sprache? Weißt du, was ein Header ist?

    – Mike Caron

    26. Februar 2011 um 17:54 Uhr

  • Für den Fall, dass Sie sich dessen nicht bewusst sind: c wird normalerweise kompiliert, während Sie darüber sprechen “Anruf[ing] Dateien, um sie zu verwenden” hat ein interpretiertes Sprachgefühl. Der Arbeitsablauf für kompilierte Sprachen unterscheidet sich geringfügig von dem für interpretierte Sprachen (obwohl viele IDEs den Unterschied vor Ihnen verbergen werden).

    – dmckee — Ex-Moderator-Kätzchen

    26. Februar 2011 um 17:57 Uhr


Benutzeravatar von Matteo Italia
Matteo Italien

Generell sollten Sie die Funktionen in den beiden getrennt definieren .c Dateien (sagen wir, A.c und B.c) und fügen ihre Prototypen in die entsprechenden Header ein (A.h, B.herinnere dich an die gehören Wächter).

Wann immer in einem .c Datei müssen Sie die in einer anderen definierten Funktionen verwenden .cDu wirst #include die entsprechende Kopfzeile; dann können Sie die Funktionen normal nutzen.

All die .c und .h Dateien müssen zu Ihrem Projekt hinzugefügt werden; Wenn die IDE Sie fragt, ob sie kompiliert werden müssen, sollten Sie nur die markieren .c zum zusammenstellen.

Schnelles Beispiel:

Funktionen.h

#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
/* ^^ these are the include guards */

/* Prototypes for the functions */
/* Sums two ints */
int Sum(int a, int b);

#endif

Funktionen.c

/* In general it's good to include also the header of the current .c,
   to avoid repeating the prototypes */
#include "Functions.h"

int Sum(int a, int b)
{
    return a+b;
}

Haupt c

#include <stdio.h>
/* To use the functions defined in Functions.c I need to #include Functions.h */
#include "Functions.h"

int main(void)
{
    int a, b;
    printf("Insert two numbers: ");
    if(scanf("%d %d", &a, &b)!=2)
    {
        fputs("Invalid input", stderr);
        return 1;
    }
    printf("%d + %d = %d", a, b, Sum(a, b));
    return 0;
}

  • Wenn ich eine .c-Datei verwenden möchte, sollte ich auch die Header-Datei (.h) erstellen!

    – amin

    26. Februar 2011 um 18:26 Uhr

  • Ich möchte nur mein komplettes Programm in .c-Dateien zerlegen und sie dann zusammen mit IDE kompilieren

    – amin

    26. Februar 2011 um 18:31 Uhr

  • Das #ifdef/#define/#endif sind da, um Probleme bei mehrfacher Einbindung des gleichen Headers zu vermeiden. Schau mal auf der Seite über gehören Wächter auf Wikipedia – dort ist alles erklärt. Übrigens, da meine Antwort Ihr Problem gelöst hat, können Sie sie als akzeptiert markieren (danke!). :)

    – Matteo Italien

    28. Februar 2011 um 22:41 Uhr


  • @lcmgcd Welche Reihenfolge Sie auch bevorzugen, jede ist völlig unabhängig voneinander – und tatsächlich werden auf modernen Computern mehrere Dateien parallel kompiliert. Erst in der Verknüpfungsphase werden sie miteinander verbunden.

    – Matteo Italien

    21. April 2018 um 16:46 Uhr

  • @learner leider hängt das von dem genauen IDE-/Build-System ab, das Sie verwenden, daher glaube ich nicht, dass ich es einfach hinzufügen kann. Letztendlich ist es ein Teil, der besser den Antworten überlassen bleibt, die für jedes Build-System spezifisch sind.

    – Matteo Italien

    30. November 2021 um 21:28 Uhr

1414660cookie-checkWie teilt man ein C-Programm in mehrere Dateien auf?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy