Problem mit funktionen
-
Hallo,
bin wieder mal da

also ich steh da momentan ziemlich an, ich bilde mir ein das schon 1000 mal so gemacht zu haben aber anscheinend doch nicht

Also das ganze ist einfach nur eine Funktion, implementiert in einem cpp file und deklariert in einem Header, aufgerufen wird sie in der main:
main.cpp
#include <iostream> #include "read.cpp" #include "read.h" using namespace std; int main() { function(); return 0; }read.cpp
#include <iostream> #include "read.h" using namespace std; int function() { cout << "Test" << endl; return 0; }read.h
#ifndef READ_H #define READ_H int function(); #endif /* READ_H */Fehlermeldung:
build/Debug/GNU-Linux-x86/read.o: In function `function()': /home/xxx/NetBeansProjects/SWPParserNeu/read.cpp:6: multiple definition of `function()' build/Debug/GNU-Linux-x86/main.o:/home/xxx/NetBeansProjects/SWPParserNeu/read.cpp:6: first defined here collect2: ld returned 1 exit status??? warum multiple definitions? eigentlich nur einmal brav in der read.cpp?
was ist da bitte falsch??
danke & lg
-
Hallo,
nimm doch mal das "#include read.cpp" raus.
Lg Tobi
-
omg... danke!
Trotzdem intressant:
Ich verwende netbeans und hab das ganze jetzt mal in einen texteditor (ubuntu) kopiert und abgespeichert.
mit g++ main.cpp kompiliert es einwandfrei auch mit dem include read.cpp in der main.
wusste ja das ich das schon mal gemacht habe

Meckert anscheinend die Entwicklungsumgebung.
danke & schönen abend noch!
lg
-
Das liegt daran, dass du dann auch manuell nur
g++ main.cppgemacht hast. Deine Entwicklungsumgebung macht aber, wie es sich gehört, das äquivalent vong++ main.cpp read.cpp(vermutlich mit Zwischenschritten, aber effektiv ist es das gleiche). Du wirst feststellen, dass du dann den gleichen Fehler bekommst. Deine IDE macht es aber trotzdem richtig, denn sie hat verstanden, wozu Header und Übersetzungseinheiten gut sind, du nicht.