Selbstdefinierte Dateitypen in Header
-
geht nicht... schrieb:
ja, DATEITYP_H ist richtig geschrieben.
bei mir kompiliert mein richtiger quellcode nicht, es gibt fehlermeldungen ala:
Headerdateien umbenennen und zwei neue erstellen. Den Code kompilierfähig machen und dann Stück für Stück die Headerdateien neu aufbauen und kompilieren, bis du auf die Fehlerursache triffst.
-
also laut der compilermeldung liegt es an einem string, der angeblich mehrmals definiert wurde. das ist aber falsch, es gibt nur einen string im ganzen quelltext mit diesem namen.
also ich muss schon sagen... die compilermeldung könnte etwas aufschlussreicher sein!
-
p.s.: wenn ich den string auskommentiere, lässt es sich kompilieren. wenn ich den string umbennene, dann besteht das problem weiterhin!!!
-
nachtrag schrieb:
also laut der compilermeldung liegt es an einem string, der angeblich mehrmals definiert wurde. das ist aber falsch, es gibt nur einen string im ganzen quelltext mit diesem namen.
also ich muss schon sagen... die compilermeldung könnte etwas aufschlussreicher sein!
String in einem Header definiert? SOllte auch nicht. Dort nur als extern anmelden. Und in der *.c definieren.
-
nachtrag schrieb:
also ich muss schon sagen... die compilermeldung könnte etwas aufschlussreicher sein!
Jo, da sagste was.
Hatte früher saugerne dazu mehrere Compiler installiert, damit ich von den verschiedenen Compilern die Fehlermeldungen anschauen konnte.
Borland war hilfreich meistens.
Microsoft war kacke meistens.
gcc war damals noch indiskutabel.
(edit: Ist heute eher andersrum. Aber egal, wenn das Programm auf mehreren Compilern geht, frag immer mal einen anderen bei häßlichen Problemen. Ok, hätte hier jetzt auch nicht geholfen.)
-
jetzt geht es! danke!
dass man strings nicht in headern definieren soll wusste ich garnicht.
gilt das generell? dass man typedefs, bzw. andere globale variablen nicht im header definiereh soll?
-
-- ok -- schrieb:
jetzt geht es! danke!
dass man strings nicht in headern definieren soll wusste ich garnicht.
gilt das generell? dass man typedefs, bzw. andere globale variablen nicht im header definiereh soll?
One Definition Rule! (google dann mal danach)
Darfst immer nur einmal definieren.
Die typedefs und den Schmodder deklarierst Du ja nur. Das darfste so oft wie Du kannst.
Naja, ist es wenig seltsam und dann doch noch zwei oder drei unlogische Ausnahmen. Gute Annahme ist: Darfst nur einmal Speicher belegen für einen Bezeichner, also so Speicher, der dann in die Exe-Datei wandert. Wie Funktionscode, gobaler String-Inhalt, globale Variable.
-
ok, und gibt es eine Möglichkeit, dass die *.c dateien beim kompilieren nicht mit angegeben werden können? gibts da irgendwelche compiler-direktiven oder sowas?
gcc irgwendwas.c nochmalwas.c header.c main.c -o header.exe
ich würde aber gerne sowas haben:
gcc main.c -o header.exe
-
letzte frage schrieb:
ich würde aber gerne sowas haben:
gcc main.c -o header.exe
Nee, kann nicht.
Du solltest Dir entweder eine Batch schreiben, die Deine Dateuien compiliert,oder ein Makefile machen.
Unter Linux, BSD oder so ist ein Makefile echt angemessen und auch total einfach schnell gemacht.
Musst nur immer die Dateien, die Du neu anlegst, dann auch immer da einpflegen.Erstmal. Später kannste auch sehr schlaue makefiles benutzen, die die *.c-Dateien selber finden.
Tuts erstmal
gcc *.c -o header.exe
?
-
gut danke für deine antworten.