Multiple Definition of Function
-
Hallo, hab hier gerade obige Fehlermeldung bekommen, als ich versuchte eine Headerfile in zwei verschiedenen anderen Dateien einzubinden.
Ich dachte eigentlich das Includeguards dafür da wären genau das sowelche Fehler zu verhindern, aber anscheinend ist das nicht so oO.Hab in der Headerfile vor den gesamten Code(befinden sich nur Funktionsdefinitionen drin)
"#ifndef SUPPORTIVE_FUNCTIONS_H_INCLUDED
#define SUPPORTIVE_FUNCTIONS_H_INCLUDED
" gepackt und ans Ende eben das endif.
Wieso erhalte ich trotzdem diesen Fehler? Scheinbar habe ich da was nicht verstanden, wäre nett wenn mir jemand helfen könnte.
-
Poste Fehler und gekürzten Code der eben diesen verursacht.
-
Dann sind aber nicht die include-guards das Problem, wenn du den Header in 2 verschieden cpp-Files inkludierst. Include-guards beziehen sich nicht auf das gesamte Programm, sondern nur auf 1 Übersetzungseinheit.
-
Gugelmoser schrieb:
Dann sind aber nicht die include-guards das Problem, wenn du den Header in 2 verschieden cpp-Files inkludierst. Include-guards beziehen sich nicht auf das gesamte Programm, sondern nur auf 1 Übersetzungseinheit.
Das. Jetzt hast du in jeder Übersetzungseinheit eine Version deiner Funktion. Und der Linker weiß am Ende nicht, welche davon gemeint ist. Lösung: Keine Definitionen in Header! (Außer Templates. Da muss das so sein und da funktioniert das auch bei mehrfacher Definition)
-
Mach die Funktion inline.
-
Ok, vielen Dank, muss ich die dann mittels "extern" deklarieren?
-
Nein
