PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++ Linux] bin ich dumm?



const_char
22-01-2003, 16:06
Hier ein Beispiel aus meinem Buch:

void main()
{

char c;


cout << "\033[2J\n\nZeichen eingeben. Ende mit ENTER:\n\n";

while((c = cin.get()) != '\n') // solange c nicht Eingabeendezeichen
cout.put(c); // Zeichen ausgeben
}

ich habe es 100% übernommen (von cd)

es lässt sich nich kompilieren

Berufspenner
22-01-2003, 16:11
Hi

Also bei mir funktioniert es. Zwar unter Windows aber da Dev-C++ den GCC benutzt ist es ja eigentlich egal. Welche Fehlermeldung kommt denn?

Cu
André

const_char
22-01-2003, 16:22
gmake all-recursive
gmake[1]: Wechsel in das Verzeichnis Verzeichnis »/home/fusel/c++/test2«
Making all in test2
gmake[2]: Wechsel in das Verzeichnis Verzeichnis »/home/fusel/c++/test2/test2«
source='main.cpp' object='main.o' libtool=no \
depfile='.deps/main.Po' tmpdepfile='.deps/main.TPo' \
depmode=gcc3 /bin/sh ../admin/depcomp \
g++ -DHAVE_CONFIG_H -I. -I. -I.. -Wnon-virtual-dtor -Wno-long-long -Wbad-function-cast -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -O0 -g3 -Wall -fno-exceptions -fno-check-new -c -o main.o `test -f main.cpp || echo './'`main.cpp
In file included from /usr/include/c++/3.2/backward/iostream.h:31,
from main.cpp:22:
/usr/include/c++/3.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
main.cpp:27: `main' must return `int'
main.cpp:27: warning: return type for `main' changed to `int'
gmake[2]: *** [main.o] Fehler 1
gmake[2]: Verlassen des Verzeichnisses Verzeichnis »/home/fusel/c++/test2/test2«
gmake[1]: Verlassen des Verzeichnisses Verzeichnis »/home/fusel/c++/test2«
gmake[1]: *** [all-recursive] Fehler 1
gmake: *** [all] Fehler 2
*** fehlgeschlagen ***

Berufspenner
22-01-2003, 16:27
Hi

Dann versuch es sonst mal mit
int main()
{

char c;


cout << "\033[2J\n\nZeichen eingeben. Ende mit ENTER:\n\n";

while((c = cin.get()) != '\n') // solange c nicht Eingabeendezeichen
cout.put(c); // Zeichen ausgeben
return 0;
}

Cu
André

anda_skoa
22-01-2003, 16:32
Wahrscheinlich hast du statt <iostream> <iostream.h> inkludiert.

Ciao,
_

const_char
22-01-2003, 16:54
Original geschrieben von Berufspenner
Hi

Dann versuch es sonst mal mit
int main()
{

char c;


cout << "\033[2J\n\nZeichen eingeben. Ende mit ENTER:\n\n";

while((c = cin.get()) != '\n') // solange c nicht Eingabeendezeichen
cout.put(c); // Zeichen ausgeben
return 0;
}

Cu
André

und was is da nun "anders"? (es funktioniert)

Berufspenner
22-01-2003, 17:02
Hi@all

Neu sind: int main() statt void main() und return 0;

Cu
André

const_char
22-01-2003, 17:11
aber warum nicht void main? Die Funktion brauch doch kein rückgabewert oder?

Boron
22-01-2003, 17:26
Doch, sie braucht!

Hier wurde lange diskutiert: http://www.mrunix.de/forums/showthread.php?s=&threadid=30898

anmate
30-01-2003, 20:00
ist ISO Standard....
MS bügelt sowas nebenbei aus, ist aber nicht gut so...

brotzi
30-01-2003, 20:08
Um nochetwas klarzustellen:

Wenn du die backward-warning wegkriegen willst gibt es 2 (saubere) Möglichkeiten

1)

#include <iostream>
using namespace std;

int main(....){
cout << "hallo" << endl;
return 0;
}

2)

#include <iostream>

int main( .... ){
std::cout << "hallo" << std::endl;
return 0;
}

}

f0rtex
31-01-2003, 17:04
Laut Stroustrup ist die Angabe eines return-Wertes fakultativ. (main muss jedoch int sein!)



Wird kein Wert zurückgegeben, erhält das System einen Wert, der die erfolgreiche Beendigung des Programms anzeigt. Liefert main() einen Rückgabewert ungleich Null, signalisiert das einen Fehler.


greetings
f0rtex