On 01.09.03 Tom Guder (tom-guder@web.de) wrote:
Am Samstag, 30. August 2003 10:46 schrieb Hilmar Preusse:
On 29.08.03 Tom Guder (tom-guder@web.de) wrote:
Hallo!
Dein Beispiel wirft bei mir eine Masse Warnings z.B.:
a.c:6: warning: previous implicit declaration of `rechne' a.c:11: warning: `rechne' was previously implicitly declared to return int'
Einfügen von "void rechne(float z, float y);" am Anfang behebt den Fehler (ohne die "). Merke: Funktionen die man benutzt immer deklarieren.
Und wie deklariere ich die Funktion eher, wenn sie in einem anderen Modul steht? (Bin immer noch Newbee in C, bitte habt Geduld...)
Du willst sagen, Du benutzt in a.c eine Funktion, die in b.c implementiert wurde. Das stört gar nicht. Du mußt nur die Zeile eintragen. Es handelt sie nur um eine Deklaration an der sich der Compiler nicht stören wird. Erst wenn der Linker dann kein Object-File mit der Implementierung der Funktion findet wird er meckern. Wenn Du es einfacher haben willst, packst Du alle Deklarationen in ein eigenes Header-File und bindest dieses mittels #include "b.h" ein.
a.c:
#include "b.h"
void main(void) { float a = 0.41, b= 1.22; rechne(a, b); return 0; }
b.c:
void rechne(float z, float y) { printf("%f, %f", z, y); return 0; }
b.h:
void rechne(float z, float y);
drachi:[hille] >gcc -c b.c b.c: In function `rechne': b.c:4: warning: `return' with a value, in function returning void drachi:[hille] >gcc -c a.c a.c: In function `main': a.c:7: warning: `return' with a value, in function returning void a.c:4: warning: return type of `main' is not `int' drachi:[hille] >gcc a.o b.o drachi:[hille] >
Ich würde sagen Du schaust mal in ein Buch. Du scheinst totaler Anfänger zu sein, da sogar ich glaube die Fragen beantworten zu können.
H.