Hi Kjion,
warum muss da im Makefile angegeben werden??
Gruß Michi
Das ist allerdings Unsinn. Die lcd.c muss im Makefile angegeben werden und nicht per include eingebunden werden.Zitat von michaelb
MfG Kjion
Hi Kjion,
warum muss da im Makefile angegeben werden??
Gruß Michi
Hi Kjion
Hatte ich vorher schon im makefile drin. hab´s geändert.
dankeschön
@Michi
Ich kenne den Unterschied auch nicht. Im makefile hat man die Möglichkeit unter
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c lcd.c
das file einzubinden.
Macht bei mir aber keinen Unterschied ob ich das lcd.c im makefile oder direkt in meinem code einbinde.
Gruß
Henrik
@michaelb
in c gibst du normalerweise nur die headerfiles von benötigten 'modulen' an, die implementationsfiles werden im makefile aufgeführt.
=> im makefile hast du dann mehrere c-files angegeben, die jeweils in ein object-file kompiliert und am schluss vom linker zusammengesetzt werden.
der grund ist unter anderem folgender: ein #include kopiert den inhalt des angegebenen files in das file, in dem das include steht. wenn jetzt ein c-file mehrfach eingebunden wird, schmeisst dir der compiler warnungen/errors, weil funktionen und so mehrfach definiert sind. (das ist auch der grund, wieso im einem headerfile immer zuerst ein #ifndef lalala #define lalala ... steht)
cu
chris
OK gute Erklärung!!
Es hat bei mir aber auch so funktioniert!!
Du schreibst
da war bei mir noch nie der Fall! Es wurde nur einmal eingebunden nämlich nur am Anfang des Codes!!wenn jetzt ein c-file mehrfach eingebunden wird
Gruß Michi
jo
folgender fall: du hast die files main.c, serial.c und utils.c
wenn du jetzt sowohl in main.c als auch in serial.c utils.c einbindest, sollte der compiler eigentlich reklamieren:
main.o(.text+0x16):utils.c:30: first defined here
serial.o(.text+0x74): In function `lalala':
utils.c:46: multiple definition of `lalala'
cu
chris
Ja OK du hast gewonnen!!![]()
Habe es verstanden!
Gruß Michi
es gibt noch ein c-programm, wo die routinen für so eine lcd nur ein bruchteil so gross ist wie diese und man versteht als anfänger den programmcode zum ansprechen der internen register um sie dann selber leichter ändern zu können.
wo diese stand, weiss ich nicht mehr.
kann sie aber mailen bei interesse.
"pebisoft@arcor.de"
mfg pebisoft
Lesezeichen