Auf andere c files "verlinken"?
-
Ah danke nun geht es.
Aber hab dann noch eine Frage dazu. Muss ich dann wenn ich mehrere Files habe, jedes einzeln dazulinken oder kann man das irgendwie vereinfachen?
-
Linken must du sie auf jeden fall.
Vereinfachen kannst du das ganze mit einem makefile.
Kurt
EDIT: deine shell expandiert die parameter sowieso. wenn du für jedes projekt ein eigenes verzeichnis verwendest solltegcc *.c -o main
auch funktionieren
-
Ok das uebersteigt mein "Koennen" doch bei weitem und glaub mal ist viel zu grosser Aufwand fuer so Kleinigkeiten, die ich zusamm bekomm.
Aber thx fuer Info, dass es doch so gehen wuerde
MfG
Edit
Hmm daran hab ich nun nicht gedacht, waere dann wieder sehr praktisch. Mal ausprobieren thx
-
makefiles sind eigentlich sehr einfach und praktisch. wenn du unter unix arbeitest, dann solltest du dich auf jeden fall mal damit beschäftigen. guck die mal die man-page zu make an. am ende steht da auch ein verweis auf eine ganz gute einführung zu makefiles, die man irgendwo frei im internet bekommen kann.
-
Konfusius schrieb:
makefiles sind eigentlich sehr einfach und praktisch. wenn du unter unix arbeitest, dann solltest du dich auf jeden fall mal damit beschäftigen. guck die mal die man-page zu make an. am ende steht da auch ein verweis auf eine ganz gute einführung zu makefiles, die man irgendwo frei im internet bekommen kann.
Das kann ich nur unterschreiben. Es stimmt zwar dass makefiles ziemlich verwirrend und auch kompliziert sein können aber die Grundfunktionalität ist eigentlich sehr einfach zu verstehen und trotzdem extrem nützlich.
Kurt
-
Werde mich dann bald mal damit naeher beschaeftigen thx
Aber bei mir ist jetzt beim rumspielen mit dem verlinken ein neuer Fehler aufgetaucht.
/tmp/ccWkcTCM.o: In function
textcolor': gemeinschaft.c:(.text+0x0): multiple definition of
textcolor'
/tmp/cctXBg8Z.o:ereignis.c:(.text+0x0): first defined here
collect2: ld returned 1 exit statusWenn ich den Fehler richtig verstehe, bedeutet der soviel wie, dass ich die Funktion mehrmals definiere wird. Die Funktion steht in einer Header Datei, welche die beiden Files includen. Wie kann ich das verhindern, dass sie merhfach Definiert wird, falls dies der Fehler ist?
-
Include-Guards.
etwa so//header.h #ifndef HEADER_H_INCLUDED #define HEADER_H_INCLUDED // declarationen hier #endif
Kurt
-
Genau so habe ich es eigentlich in jeder Header, die ich verwende drin stehen. Aber bekomme dennoch den Fehler.
#ifndef __FARBEN_H__ #define __FARBEN_H__ void textcolor(int modus, int text, int hintergrund) { char command[13]; sprintf(command, "%c[%d;%d;%dm", 0x1B, modus, text + 30, hintergrund + 40); printf("%s", command); } #endif
und in 2 anderen Headern wo ich dies dann brauche einfach ueber
#include "./farben.h"
Diese 2 andere Header werden wiederrum in 2 unterschiedlichen Files included.
Ist n ziemliches Durcheinander, weiss, aber wo ich dort jetz den Wurm drin hab seh ich nicht...
-
Du definierst die funktionen im Header. Das geht nicht
//farben.h #ifndef FARBEN_H__ #define FARBEN_H__ void textcolor(int modus, int text, int hintergrund); #endif
// farben.c void textcolor(int modus, int text, int hintergrund) { char command[13]; sprintf(command, "%c[%d;%d;%dm", 0x1B, modus, text + 30, hintergrund + 40); printf("%s", command); }
BTW __FARBEN_H__ ist nicht erlaubt ( führende unterstrichre sind reserviert )
Kurt
-
Ah es geht thx.
Das mit der Funktion im Header, hab ich nicht dran gedacht, dass es nicht soooo gut ist.
Muss nun von dem gelernten in der Schule wegkommen, da die Lehrer uns das so erklaert haben, dass es nicht sonderlich viel ausmacht, wenn man Funktionen, die man haeufiger braucht in eine Header Datei schreibt. Haben wohl nicht ans verlinken gedacht...mfg