PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit DEV-C++



Alex020
27-12-2004, 13:42
Hallo.
Ich habe das Problem mit Dev-C++, dass es das einfachste Programm nicht kompilieren will. Ich weis aber leider nicht warum. :confused:

Mein Quellcode:
------------------------------------------
#include <iostream.h>
#include <conio.h>

void main ()

{
cout << "Hallo" << endl;
}
------------------------------------------


Computerausgabe:
------------------------------------------
Zeile 1: In file included from C:/Programme/Dev-C++/include/c++/3.3.1/backward/iostream.h:31, from Hello.cpp

Zeile 1: from Hello.cpp

Zeile 2: #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 <sstrea

Zeile 6: `main´ must return `int`

Zeile 1; [Warning] no newline at end of file

keine Zeile: [Build Error] ["Projekte und Datein/Hello.o"] Error 1
------------------------------------------

Ich schlage mich nun seit wochen damit rum und kriege es nicht hin endlich mal ein Programm zu schreiben. Ich würde endlich mal gerne das Ding funktionieren sehen!! :mad:

Vielen Dank für jede Hilfe!! :)

Alex_K
27-12-2004, 14:09
die 1. warnung kommt weil du c und c++ mischst, die 2. weil kein newline am ende der datei ist.

kompilieren lässt es nicht nicht weil die main kein int zurück liefert. manche compiler akzeptieren auch void als rückgabe für main, aber soweit ich weiß ist es nach aktuellen c++ standard nicht erlaubt.

so sollte es funktionieren:



#include <iostream>

int main ()
{
std::cout << "Hallo" << endl;

return 0;
}

sixfriends
27-12-2004, 14:13
Ist doch offensichtlich:

Zeile 6: `main´ must return `int`

Bedeutet die main Funktion hat nicht den Rückgabewert 'void', sondern 'int'.
=> Aus 'void main' mach 'int main' und schreib der Sauberkeit halber ans Ende der Funktion ein 'return 0;'

sixfriends

sixfriends
27-12-2004, 14:15
@Alex_K: Warst wohl ein bischen schneller....

locus vivendi
27-12-2004, 14:20
Hallo.
Ich habe das Problem mit Dev-C++, dass es das einfachste Programm nicht kompilieren will. Ich weis aber leider nicht warum.
Es ist mir bewusst das Compiler-Fehlermeldungen häufig irreführend sind. Trotzdem würde ich solche Meldungen als ersten Hinweis auf ein Problem beachten. Speziell bei deinem Beispiel ist es so das dir der Compiler Klipp und Klar gesagt hat, welche Probleme du hast. Viel deutlicher kann es ein Mensch auch nicht mehr sagen. Ausserdem wurde mindestens eins, ich glaube sogar aller drei Punkte die der Compiler ausspuckt hier schon diskutiert. Ausserdem spuckt ein simples "c++ faq" bei Google an erster Stelle ein gutes Dokument aus welches für dich relevant ist. An dritter Stelle kommt dann sogar etwas wo ein Programm welches deinem sehr ähnlich ist ausführlich kommentiert wird. Bei Google "c++ anfängerproblem" oder "c++ newbie" eingeben findet auch ein paar Sachen die brauchbar wären.

Etwas mehr Recherche deinerseits hätte also schon weitergeholfen. Aber ich will nicht nur den Zeigefinger erheben, sondern auch Hinweise geben:


Zeile 1: In file included from C:/Programme/Dev-C++/include/c++/3.3.1/backward/iostream.h:31, from Hello.cpp

Zeile 1: from Hello.cpp

Zeile 2: #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 <sstrea
Die C++ Standard Header tragen in der neuen Form nicht Namen die auf ".h" enden. Also statt iostream.h nur noch iostream. Genauso wie der Compiler sagt. Die alten Header mit .h sollten eigentlich nicht mehr verwendet werden und gehören nur noch um Rückwärtskompatibilität zu haben zum Standard.


Zeile 6: `main´ must return `int`
Genauso wie der Compiler sagt. In C und C++ muss die main-Funktion schon immer int zurückgeben.


Zeile 1; [Warning] no newline at end of file
Eine C++ Übersetzungseinheit muss mit einer leeren Zeile enden. Füge einfach eine Leerzeile am Ende ein.

-

Der conio.h Header ist übrigens Plattformspezifisch, und auf der "Plattform" welche im Namen dieses Forums ("mrunix") enthalten ist, normalerweise nicht vorhanden. Mein Tipp an dich wäre, zu versuchen ohne conio.h auszukommen.

`kk
27-12-2004, 14:43
Hi Leute.
Habe ein ähnliches Problem und wollte deshalb nicht einen neuen Thread eröffnen.

Also,
Quellcode:

#include <iostream.h>

int main()
{
printf("test");
return 0;
}
Fehler:

kai@bahamut kai $ gcc shit.c -Wall -o shit
shit.c:1:22: iostream.h: No such file or directory
shit.c: In function `main':
shit.c:5: warning: implicit declaration of function `printf'

Was hab ich denn da falsch gemacht? :confused:

peschmae
27-12-2004, 15:04
Die C-IO Funktionen (u.A. printf) sind im header stdio.h und nicht in iostream deklariert. Iostream ist C++-Zeugs.

MfG Peschmä

`kk
27-12-2004, 15:22
Danke, .. ist das schon immer so?
Ich erinner mich dunkel daran das schon immer so gemacht zu haben. :rolleyes:

Edit: Ich glaube ich habe damals printf in C++ benutzt und iostream.h eingebunden gehabt.

peschmae
27-12-2004, 16:14
Wenn du C++ Programmieren willst musst du halt entsprechend g++ und nicht gcc zum kompilieren verwenden.

Aber dann heissen die header <iostream> und nicht <iostream.h> - letzteres ist noch von früher und depreceated (g++ meldet das auch).

MfG Peschmä

`kk
27-12-2004, 16:34
Drücke ich mich so unverständlich aus?
Ich möchte nicht C++ machen.
Ich hab es eben nochmal probiert und es geht mit iostream.h in C++.
Der Warunung kommt, da hast du recht.

Das war halt der Grund warum ich in C ausversehen iostream.h reingenommen hab.

peschmae
27-12-2004, 18:19
Du drückst dich nicht unverständlich aus. Nur hattest noch nicht gesagt dass du nicht C++/G++ verwenden willst.

MfG Peschmä

`kk
27-12-2004, 18:56
Ich dachte man sieht es an den verwenden Funktionen. :D

Alex020
29-12-2004, 14:51
Vielen Dank für die ausführliche Unterstützung!

Das Blöde ist nur: Alles was ich als Quellcode eingegeben hatte, habe ich in der Schule gelernt. In der Schule funktionierts auch. Wir benutzen Borland C++.
Funktioniert das ganze aus der Schule etwa im Dev-C++ nicht? Oder habe ich euch falsch verstanden. Ich habe eigentlich null Ahnung von Programmieren, möchte es aber trotzdem erlernen. Ist ja auch praktisch.

Kennt ihr ein gutes e-book mit dem ich C++ lernen kann? Eines, das gleich die moderne Art von C++ nutzt, als die die ich in der Schule lerne.
Ich weis auch nicht warum unser Lehrer uns das beibringt, was bei mir daheim nicht funktioniert, obwohl sein Studium gar nicht so lang her ist.
Oder ist Dev-C++ ein Programm wo man sich neu einstellen muss?

mfg Alex

`kk
29-12-2004, 14:59
Borland benutzt halt irgendwelche zusätzlichen Header, die nicht im C++ Standard sind. Die sind in Dev-C++ nicht enthalten, deswegen funktioniert es nicht. Du kannst aber auch in Borland Standard C++ programmieren. Natürlich nur so weit, wie der Lehrer das vorgibt.
Ich z.B. musste void main(void) schreiben, auch Quatsch und kein Standard. Aber was soll's...

Zu C++ Büchern:
Es gibt eigentlich genug Seiten über C++.
Hier mal eine kleine Linkliste: http://www.robsite.de/tutorials.php?tut=c