cout
-
Guten Abend allerseits
Sry, für diese Anfängerfrage. Ich habe mich entschlossen mal ein bisschen in die Programmierung unter Linux reinzuschnuppert. Ich verwende GCC 4.0.
Ich habe folgenden Codeausschnitt aus diesem Tutorial kopiert:
http://www.cpp-entwicklung.de/cpplinux/cpp_main/node4.html#SECTION00414000000000000000/* Das erste Programm: Summe der Zahlen von 1 bis 10 */ #include <iostream> int main(void) { // Variable deklarieren und initialisieren int zahl; zahl = 0; // Schleife durchlaufen for (int i = 1; i <= 10; i++) { zahl += i; cout << "Summe bis " << i << ": "; cout << zahl << "\n"; } }
Mich verwirren nun einige Sachen doch sehr stark. Müsste es nicht heissen int main() mit dem Rückgabewert 0? Oder kann ohne weiteres dies mit void realisiert werden?
Nach meinem Wissen ist std::cout der richtige Aufruf? Warum sollte dies hier ohne using namespace std; funktionieren?
Wenn ich nun aber anstatt cout überall std::cout schreibe erhalte ich viele Compiler Errors.
Danke für Wure Hilfe.
-
ohne using namespace std; oder std:: funktioniert es sicher nicht.
Welche Fehler bekommst du denn?
-
/tmp/cc9YKL9x.o: In function
main': test.cpp:(.text+0x3d): undefined reference to
std::cout'
test.cpp:(.text+0x42): undefined reference tostd::basic\_ostream<char, std::char\_traits<char> >& std::operator<< <std::char\_traits<char> >(std::basic\_ostream<char, std::char_traits<char> >&, char const*)' test.cpp:(.text+0x51): undefined reference to
std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'
test.cpp:(.text+0x62): undefined reference tostd::basic\_ostream<char, std::char\_traits<char> >& std::operator<< <std::char\_traits<char> >(std::basic\_ostream<char, std::char_traits<char> >&, char const*)' test.cpp:(.text+0x70): undefined reference to
std::cout'
test.cpp:(.text+0x75): undefined reference tostd::basic\_ostream<char, std::char\_traits<char> >::operator<<(int)' test.cpp:(.text+0x86): undefined reference to
std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/cc9YKL9x.o: In function\_\_tcf\_0': test.cpp:(.text+0xaf): undefined reference to
std::ios_base::Init::~Init()'
/tmp/cc9YKL9x.o: In function\_\_static\_initialization\_and\_destruction_0(int, int)': test.cpp:(.text+0xdc): undefined reference to
std::ios_base::Init::Init()'
/tmp/cc9YKL9x.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld gab 1 als Ende-Status zurückHab nun mal using namespace std; reingenommen.
-
analyzer schrieb:
Mich verwirren nun einige Sachen doch sehr stark. Müsste es nicht heissen int main() mit dem Rückgabewert 0? Oder kann ohne weiteres dies mit void realisiert werden?
void ist nur der Parameter, nicht der Rückgabewert, der ist bei "int main(void)" int. In C++ schreibt man aber für gewöhnlich eher "int main()", da dies hier äquivalent zu "int main(void)" ist, anders als in C.
Nach meinem Wissen ist std::cout der richtige Aufruf? Warum sollte dies hier ohne using namespace std; funktionieren?
Sollte es nicht.
Wenn ich nun aber anstatt cout überall std::cout schreibe erhalte ich viele Compiler Errors.
Wenn ich Deinem Programm ein "using namespace std;" hinzufüge, kompiliert es anstandslos.
-
analyzer schrieb:
/tmp/cc9YKL9x.o: In function `main': test.cpp:(.text+0x3d): undefined reference to `std::cout'[...]
Hab nun mal using namespace std; reingenommen.
Kompilierst Du auch sicher mit g++ und nicht mit gcc?
-
Danke für Deine Hilfe.
Habe den Fehler gefunden. Nun aber noch eine Verständnis Frage, ich habe bei mir GCC und g++ drauf. Was ist nun für was?
-
gcc für c
g++ für c++
-
analyzer schrieb:
Habe den Fehler gefunden. Nun aber noch eine Verständnis Frage, ich habe bei mir GCC und g++ drauf. Was ist nun für was?
GCC ist die GNU Compiler Collection.
gcc ist der GNU C Compiler.
g++ ist der GNU C++ Compiler.
-
Aha, Danke.