Kommandozeilen-Compiler; Funktionsprototypen
-
Hallo,
ich möchte ein Programm mit dem Kommandozeilen-Compiler (Borland C++ Version 3.1) compilieren.
Ich habe dazu 3 C-Dateien. Die erste Datei hat folgenden Inhalt:
#include <stdio.h> void eingabe(void); void berechnung(void); void ausgabe(void); int main(void) { eingabe(); berechnung(); return 0; } void eingabe(void) { /* Code der Funktion eingabe() */ }
Die zweite Datei hat diesen Inhalt:
#include <stdio.h> void berechnung(void) { /* Code der Funktion Berechnung */ ausgabe(); }
Die dritte Datei hat diesen Inhalt:
#include <stdio.h> void ausgabe(void) { /* Code der Funktion Ausgabe */ }
Zum Compilieren habe ich mir eine Batch-Datei geschrieben um alle 3 Dateien zusammenzubinden. Diese Batch-Datei hat folgenden Inhalt:
bcc -nc:\bc\test c:\bc\test\haupt.c c:\bc\test\berech.c c:\bc\test\ausgabe.c
Ich erhalte beim Compilieren folgende Warnung:
Warning c:\bc\test\berech.c 6: call to function 'ausgabe' with no prototype in function berechnung
Warum kommt diese Warnung? Ich habe doch in der Datei haupt.c die Funktion ausgabe() deklariert.
Ich habe für diesen Test Dummy-Funktionen verwendet. Mir geht es hier nicht um die Funktion des Programms, sondern um die Anwendung des Kommandozeilen-Compilers.
Gruß
Klaus-Dieter
-
Der Compiler hat doch recht du hast in der Datei wo du ausgabe(); verwendest keinen Funktions-Prototyp deklariert.
Du solltest den Prototyp in eine Header Datei schreiben und dann überall inkludieren.mfg
j_freeze
-
Hallo,
j_freeze schrieb:
Der Compiler hat doch recht du hast in der Datei wo du ausgabe(); verwendest keinen Funktions-Prototyp deklariert.
Du solltest den Prototyp in eine Header Datei schreiben und dann überall inkludieren.mfg
j_freeze
Ich habe doch in der ersten Datei die Prototypen für alle Funktionen deklariert. Dann müßten doch dem Compiler alle Funktionen bekannt sein, da die erste Datei zuerst compiliert wird?
Gruß
Klaus-Dieter
-
Nein, die werden trotzdem alle getrennt compiliert.