PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cpp - cout



Giuly
12-05-2003, 12:42
ich hagb ein kleines Problem...
hier mal der Source


#include <iostream>
int main()
{
cout << "Hello World!\n";
return 0;
}


gcc sagt das:


[giuly@localhost cpp]$ gcc -o hello2 hello2.cpp
hello2.cpp: In function `int main()':
hello2.cpp:4: `cout' undeclared (first use this function)
hello2.cpp:4: (Each undeclared identifier is reported only once for each
function it appears in.)


was is da falsch?

arthur
12-05-2003, 13:02
erstens, du versuchst c++ code mit dem c compiler zu kompilieren.
gcc ist für c und g++ für c++

und zweitens, bitte namespaces benutzen ! ;)
(zwar bei 2.9x nicht notwendig, aber ab 3.xx schon)
die ganzen standard bibliotheken liegen im namspace std
hier EINE möglichkeit (man kann auch using ... benutzen)


#include <iostream>
int main()
{
std::cout << "Hello World!"<<std::endl;
return 0;
}


gruss
Arthur

Giuly
12-05-2003, 13:31
is der gcc nicht für C, C++, Java und was weiß ich nicht noch alles?

tuxipuxi
12-05-2003, 13:48
hi,

der gcc ist die Gnu compiler collection.

es hat ein gcc-cpp was fuer die c++ kompilierung zustaendig ist.
der binaryname ist c++.

Boron
12-05-2003, 14:15
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
Oder du schreibst die using-Zeile hin, dann kannst du dir die zusätzlichen std:: sparen.

anda_skoa
12-05-2003, 14:56
Original geschrieben von tuxipuxi
der gcc ist die Gnu compiler collection.

Ich glaube dann schreibt man es in Großbuchstaben, also GCC.
Klein geschrieben ist es der C Compiler.



es hat ein gcc-cpp was fuer die c++ kompilierung zustaendig ist.
der binaryname ist c++.
g++
c++ ist meistens nur ein Link, für Unix Makefiles ohne autoconf/automake

Ciao,
_

peschmae
12-05-2003, 15:33
wer hatte eigentlich die grässliche Idee mit


cout << "Bla"

in C++ :confused:

ich find das grässlich.

MfG Peschmä

jwebworks
13-05-2003, 07:04
Ist optisch nicht sehr ansprechend, oder? :D

LinuxDev
13-05-2003, 08:12
nun - ausser das da das Semikolon fehlt siehts doch eigentlich ganz gut aus oder? ;)

peschmae
13-05-2003, 08:25
naja ich find

System.out.println("Bla");
mit semikolon :D

doch viel ansprechender und vor allem logischer

MfG Peschmä

LinuxDev
13-05-2003, 08:32
und das ist was? C++ oder uralt C? keine ahnung...

anda_skoa
13-05-2003, 09:40
Original geschrieben von LinuxDev
und das ist was? C++ oder uralt C? keine ahnung...

Java

Aber ich finde die C++ Schreibweise sieht mehr nach Stream aus.

Der Unterschied ist aber erst bei mehrern Teilen gegeben.



int i = 5;
cout << "abc" << i << "abc" < endl;


in Java


System.out.println("abc" + i + "abc");

Ich glaube da wird i in einen String umgewandelt und zwei mal eine Stringkonkatention gemacht.

Damit man das selber Verhalten wie in C++ erreicht, müsste man schreiben


System.out.print("abc");
System.out.print(String.valueOf(i));
System.out.println("abc");


Ciao,
_

LinuxDev
13-05-2003, 10:13
HI

also wenn man das so sieht - mir is die C++ Schreibweise viel lieber ;)

muha

arthur
13-05-2003, 11:53
man hat sich halt gegen das überladen von operatoren bei java entschieden,
hat ja alles seine vor- und nachteile

gruss
Arthur

peschmae
13-05-2003, 11:54
ok, wenn man s als stream betrachtet, ists schon gar nicht mehr so schlimm :D


System.out.print(i);
geht übrigens auch

MfG Peschmä

tuxipuxi
13-05-2003, 12:31
Original geschrieben von anda_skoa
Ich glaube dann schreibt man es in Großbuchstaben, also GCC.
Klein geschrieben ist es der C Compiler.


g++
c++ ist meistens nur ein Link, für Unix Makefiles ohne autoconf/automake

Ciao,
_

*arg*,

ich hoffe das du mir glaubst das "c++" ein rechtschreibfehler war und ich g++ meinte :) ... so doof bin ich ja nicht.

GCC scheinst du recht zu haben.

anda_skoa
13-05-2003, 14:12
Original geschrieben von peschmae
ok, wenn man s als stream betrachtet, ists schon gar nicht mehr so schlimm :D


Als was soll man einen Stream denn sonst betrachten?




System.out.print(i);
geht übrigens auch


Stimm, mein Fehler.

Ciao,
_

peschmae
13-05-2003, 14:54
als nix anderes, (wie sollte man auch :p)

was ich sagen wollte: ich wusste gar nicht, dass man damit mehrere sachen aus geben kann (meine C++ - Exkurse waren nur recht kurz)

MfG Peschmä

peschmae
13-05-2003, 18:05
hab nachgeschaut: bei meiner einzigen ernsthaften C++ - App (Fltk Soundrecorder, zeitgesteuert mit on-the fly mp3lame/ogg - encoding) habe ich immer
FILE - deskriptoren bzw popen/fwrite zum öffnen/schreiben benutzt
und natürlich printf() für Stringausgabe

kann man denn mit dem << und < - Zeugs auch in "normale" Dateien schreiben/lesen?
Spricht was gegen die C-Funktionen (das werden popen/fwrite und so wohl sein)?
und wenn wir schon dabei sind: ist Thinking in C++ ein gutes Buch (ups, sollte plural sein ;-)) um C++ zu lernen? (Nur so nebenbei zum Nachschlagen, ich glaube nicht, dass ich von Java abkommen werde)

MfG Peschmä

anda_skoa
13-05-2003, 18:18
Original geschrieben von peschmae
kann man denn mit dem << und < - Zeugs auch in "normale" Dateien schreiben/lesen?


Natürlich.
Das ist wie in Java: das Ziel bzw, die Quelle des Streams ist völlig egal.



Spricht was gegen die C-Funktionen (das werden popen/fwrite und so wohl sein)?


Operator overloading und die dadurch enstehende Typsicherheit.
Bei C Funktionen kann man praktisch nur char* Puffer lesen/schreiben.
Außerdem ist es wie gesagt unabhängig vom IO Ziel des Streams.

Ein Stream ist eben eine Abstraktion.



und wenn wir schon dabei sind: ist Thinking in C++ ein gutes Buch (ups, sollte plural sein ;-)) um C++ zu lernen? (Nur so nebenbei zum Nachschlagen, ich glaube nicht, dass ich von Java abkommen werde)


Ich kenn das Buch nicht, aber die "Thinking in ..." Reihe ist normaleweise schon gut.

Ciao,
_

arthur
14-05-2003, 12:41
und wenn wir schon dabei sind: ist Thinking in C++ ein gutes Buch (ups, sollte plural sein ;-)) um C++ zu lernen? (Nur so nebenbei zum Nachschlagen, ich glaube nicht, dass ich von Java abkommen werde)

ich habe sowohl das java wie auch das c++ buch gesehen ,
und halte sie für ziemlich gut, man muss aber sagen dass es
sich nicht um bücher für wirkliche anfänger handelt, es geht
doch relativ schnell ziemlich zu sache;) aber dafür werden auch
viele interessante themen behandelt, zb. das nutzen von pattern,
optimierung usw.

gruss
Arthur

ps.
sollte es doch noch jemand nicht wissen,
beide bücher sind in der digitalen form (pdf) frei erhältlich.

peschmae
15-05-2003, 11:12
naja, ich finde html eigentlich wichtiger, da PDF zur Darstellung langsamer ist und tabbed browsing extrem praktisch ist

MfG Peschmä

arthur
15-05-2003, 12:56
Original geschrieben von peschmae
naja, ich finde html eigentlich wichtiger, da PDF zur Darstellung langsamer ist und tabbed browsing extrem praktisch ist

MfG Peschmä

Hast insofern recht, dass es die bücher auch als html gibt,
aber der rest ist geschmacksache :)
ich kann selber nicht über geschwindikeitsprobleme klagen, ausserdem drucke ich lieber aus pdfs
als aus html.

gruss
Arthur

peschmae
15-05-2003, 14:15
du druckst die TIJ/TIC - Bücher aus !?!?

das ist ja sogar mit einem Laserdrucker noch teurer als kaufen!

MfG Peschmä

arthur
15-05-2003, 17:43
das hab ich nicht behauptet,
ich halte nicht viel davon etwas auzudrucken was ich vielleicht nur einmal
lese, aber einzelne abschnitte die man immer wieder mal braucht wie zb. über stl,
warum nicht ?
wollte nur sagen, wenn drucken dann doch lieber pdf.

gruss
Arthur

SeCa
15-05-2003, 21:38
Ist man eigentlich out wenn man den gcc 2.95 braucht? :)

Nein, im Ernst. Ich habe gehört, dass die gcc 3.x's ziemlich viel sch**** machen und da dachte ich mir dass ich lieber bei meinem altem bleib. Hat es irgendwelche Vorteile wenn man wechselt?

arthur
15-05-2003, 22:02
Original geschrieben von SeCa
Ist man eigentlich out wenn man den gcc 2.95 braucht? :)

Nein, im Ernst. Ich habe gehört, dass die gcc 3.x's ziemlich viel sch**** machen und da dachte ich mir dass ich lieber bei meinem altem bleib. Hat es irgendwelche Vorteile wenn man wechselt?

3.2 scheint doch ziemlich stabil zu sein,
ein wichtiger vorteil / nachteil;) ist dass es sich strikt an den iso c++ standard
hält, was aber bei einem wechsel von 2.9x auf 3.x leider meistens extra arbeit bedeutet:)
ansonsten wird er wohl besser optimieren, schneller compilieren? usw.
2.9x wird langsam aber sicher sterben.

gruss
Arthur

peschmae
16-05-2003, 09:20
ich denke auch, tempo war schon immer ein gutes argument :D

ausserdem wird der GCJ immer besser :D :D
und die grösseren Distributionen sind ja schon umgestiegen

MfG Peschmä

anda_skoa
16-05-2003, 09:31
Original geschrieben von peschmae
und die grösseren Distributionen sind ja schon umgestiegen


Da geht es vordringlich um die neue ABI, vorallem weil erwartet wird, dass sie über einige Jahre stabil bleiben wird und möglicherweise auch von Non-GCC Compilern benutzt wird.
AFAIK tut das der icc auch.

Ciao,
_

peschmae
16-05-2003, 10:00
jau, bei c solls zumindest schon funktionieren

bei c++ ist das zeugs irgendwie (noch?) nicht kompatibel (mit intels compiler)

MfG Peschmä