PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compiler für primitives Tut Programm?


Hui!
2003-01-06, 06:14:33
Hallo zusammen,

ich bin gerade dabei mich in C++ einzuarbeiten, dafür verwende ich den Borland C++ Builder und das Buch "C++ mit dem Borland C++ Builder".
Mit dieser Auswahl bin eigentlich auch recht zufrieden, nur lerne ich irgendwie nichts von C++ in diesem Sinne, obwohl ich im Buch schon einiges Vorangekommen bin weiß ich immer noch nicht genau wie so ein C++ Programm aufgebaut ist.
Darauf habe ich mich entschieden erstmal mit Hilfe verschiedener Tutorials die Grundlagen der Sprache zu lernen, aber ich scheitere immer schon am ersten primitiven Programm -> ich kann es nicht compilen.

Weder mit der Borland IDE, noch dem freien 5.5 Compiler und auch mit DevC++ habe ich es hin bekommen ein "Hello World" Code zu übersetzten.
-Beim Builder raff ich nicht wo ich direkt Code Reinschreiben kann.
-Beim freien hab ich keine Ahnung wie der geht(noch nie mit einem Compiler gearbeitet)
- Bei DevC++ verursacht
#include <iostream.h>
void main()
{
// Dies ist das Hello-World-Programm
cout<<"Hello, world!"<<endl;
};

folgende Fehler:
C:/Dev-Cpp/Neuer Ordner/Unbenannt1.cpp:1:22: iostream.h: No such file or directory
C:/Dev-Cpp/Neuer Ordner/Unbenannt1.cpp:3: `main' must return `int'
C:/Dev-Cpp/Neuer Ordner/Unbenannt1.cpp: In function `int main(...)':
C:/Dev-Cpp/Neuer Ordner/Unbenannt1.cpp:5: `cout' undeclared (first use this
function)
C:/Dev-Cpp/Neuer Ordner/Unbenannt1.cpp:5: (Each undeclared identifier is
reported only once for each function it appears in.)

C:/Dev-Cpp/Neuer Ordner/Unbenannt1.cpp:5: `endl' undeclared (first use this
function)

Ausführung beendet


Ich denke ihr versteht mein Problem, ich brauch eine Anleitung zum compilen, eine einfache.
Wenn ihr Links zu freien Compilern habt, wäre ich euch auch sehr verbunden dazu ein paar kleine Sätze zu schreiben, bis jetzt hab ich kein einziges Readme File verstanden.

Nagilum
2003-01-06, 08:45:19
Versuch mal:


#include <iostream>

int main()
{
// Dies ist das Hello-World-Programm
cout << "Hello, world!" << endl;

return 0;
};



Kurz zur Erklärung:

Die Datei "iostream.h" wurde schon vor längerer Zeit in "iostream" umgetauft. Alle Header-Dateien der STL kommen jetzt ohne dieses ".h" aus.

Die Funktion main() muss einen Integer-Wert zurückgeben, der Auskunft über das Resultat deines Programms gibt. 0 wenn das Programm erfolgreich war, 1 wenn nicht. Deshalb musst du "int" (für Integer) anstatt "void" (kein Rückgabewert) verwenden.

Hui!
2003-01-06, 08:57:31
Jetzt kommt das(DevC++):


Compiler: Default compiler
Führt g++.exe... aus
g++.exe "C:\Dev-Cpp\Neuer Ordner (3)\Unbenannt1.cpp" -o "C:\Dev-Cpp\Neuer Ordner (3)\Unbenannt1.exe" -I"C:\Dev-Cpp\include" -I"C:\Dev-Cpp\include\c++" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
In file included from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/iostream:44:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/ios:44,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/iosfwd:44:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/iosfwd:45,
from C:/Dev-Cpp/include/c++/ios:44,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/stringfwd.h:44:28: bits/c++config.h: No such file or directory

In file included from C:/Dev-Cpp/include/c++/iosfwd:46,
from C:/Dev-Cpp/include/c++/ios:44,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/fpos.h:44:24: bits/c++io.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/fpos.h:45,
from C:/Dev-Cpp/include/c++/iosfwd:46,
from C:/Dev-Cpp/include/c++/ios:44,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/cwchar:49:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/iosfwd:46,
from C:/Dev-Cpp/include/c++/ios:44,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/fpos.h:60: 'streamoff' is used as a type, but is
not defined as a type.
C:/Dev-Cpp/include/c++/bits/fpos.h:74: parse error before `__off'
C:/Dev-Cpp/include/c++/bits/fpos.h:75: missing ';' before right brace
C:/Dev-Cpp/include/c++/bits/fpos.h:77: semicolon missing after declaration of `
std::fpos<_StateT>'
C:/Dev-Cpp/include/c++/bits/fpos.h: In constructor

`std::fpos<_StateT>::fpos()':
C:/Dev-Cpp/include/c++/bits/fpos.h:72: class `std::fpos<_StateT>' does not have
any field named `_M_off'
C:/Dev-Cpp/include/c++/bits/fpos.h: At global scope:
C:/Dev-Cpp/include/c++/bits/fpos.h:77: parse error before `(' token
C:/Dev-Cpp/include/c++/bits/fpos.h:77: ISO C++ forbids defining types within
return type
C:/Dev-Cpp/include/c++/bits/fpos.h:77: syntax error before `(' token
C:/Dev-Cpp/include/c++/bits/fpos.h:79: syntax error before `&' token
C:/Dev-Cpp/include/c++/bits/fpos.h:82: syntax error before `&' token
C:/Dev-Cpp/include/c++/bits/fpos.h:86: syntax error before `operator'
C:/Dev-Cpp/include/c++/bits/fpos.h:89: syntax error before `+=' token
C:/Dev-Cpp/include/c++/bits/fpos.h:94: syntax error before `operator'
C:/Dev-Cpp/include/c++/bits/fpos.h:97: syntax error before `-=' token
C:/Dev-Cpp/include/c++/bits/fpos.h:102: parse error before `&' token
C:/Dev-Cpp/include/c++/bits/fpos.h:103: non-member function `bool
operator==(...)' cannot have `const' method qualifier
C:/Dev-Cpp/include/c++/bits/fpos.h:103: `bool operator==(...)' must have an
argument of class or enumerated type
C:/Dev-Cpp/include/c++/bits/fpos.h:103: `bool operator==(...)' must take
exactly two arguments
C:/Dev-Cpp/include/c++/bits/fpos.h: In function `bool operator==(...)':
C:/Dev-Cpp/include/c++/bits/fpos.h:103: `_M_off' undeclared (first use this

function)
C:/Dev-Cpp/include/c++/bits/fpos.h:103: (Each undeclared identifier is reported

only once for each function it appears in.)

C:/Dev-Cpp/include/c++/bits/fpos.h:103: `__pos' undeclared (first use this
function)
C:/Dev-Cpp/include/c++/bits/fpos.h: At global scope:
C:/Dev-Cpp/include/c++/bits/fpos.h:106: parse error before `&' token
C:/Dev-Cpp/include/c++/bits/fpos.h:107: non-member function `bool
operator!=(...)' cannot have `const' method qualifier
C:/Dev-Cpp/include/c++/bits/fpos.h:107: `bool operator!=(...)' must have an
argument of class or enumerated type
C:/Dev-Cpp/include/c++/bits/fpos.h:107: `bool operator!=(...)' must take
exactly two arguments
C:/Dev-Cpp/include/c++/bits/fpos.h:110: parse error before `)' token
C:/Dev-Cpp/include/c++/bits/fpos.h:113: `streamoff' was not declared in this
scope

C:/Dev-Cpp/include/c++/bits/fpos.h:113: parse error before `)' token
C:/Dev-Cpp/include/c++/bits/fpos.h: In function `void _M_position(...)':

C:/Dev-Cpp/include/c++/bits/fpos.h:113: `__off' undeclared (first use this
function)
C:/Dev-Cpp/include/c++/bits/fpos.h: At global scope:
C:/Dev-Cpp/include/c++/bits/fpos.h:114: parse error before `}' token
C:/Dev-Cpp/include/c++/bits/fpos.h:117: syntax error before `;' token
In file included from C:/Dev-Cpp/include/c++/ios:46,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/char_traits.h:59: parse error before `;' token
C:/Dev-Cpp/include/c++/bits/char_traits.h:60: parse error before `;' token

C:/Dev-Cpp/include/c++/bits/char_traits.h:113: parse error before `;' token
C:/Dev-Cpp/include/c++/bits/char_traits.h:114: parse error before `;' token

C:/Dev-Cpp/include/c++/bits/char_traits.h: In static member function `static
int std::char_traits<char>::eof()':
C:/Dev-Cpp/include/c++/bits/char_traits.h:168: `EOF' undeclared (first use this
function)

In file included from C:/Dev-Cpp/include/c++/ios:47,
from C:/Dev-Cpp/include/c++/ostream:45,

from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:

C:/Dev-Cpp/include/c++/cstdio:49:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/localefwd.h:45:28: bits/c++config.h: No such file or directory
C:/Dev-Cpp/include/c++/bits/localefwd.h:46:80: bits/c++locale.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/localefwd.h:48,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/cctype:48:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/string:45:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/memory:54,
from C:/Dev-Cpp/include/c++/string:48,
from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/stl_algobase.h:64:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/stl_algobase.h:67,
from C:/Dev-Cpp/include/c++/memory:54,
from C:/Dev-Cpp/include/c++/string:48,

from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/cstdlib:49:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/stl_algobase.h:72,
from C:/Dev-Cpp/include/c++/memory:54,
from C:/Dev-Cpp/include/c++/string:48,
from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/type_traits.h:54:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/stl_iterator_base_funcs.h:68,

from C:/Dev-Cpp/include/c++/bits/stl_algobase.h:74,
from C:/Dev-Cpp/include/c++/memory:54,
from C:/Dev-Cpp/include/c++/string:48,
from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/concept_check.h:40:28: bits/c++config.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/stl_alloc.h:86,
from C:/Dev-Cpp/include/c++/memory:55,
from C:/Dev-Cpp/include/c++/string:48,

from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,
from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/stl_threads.h:52:23: bits/gthr.h: No such file or directory
In file included from C:/Dev-Cpp/include/c++/bits/stl_alloc.h:86,

from C:/Dev-Cpp/include/c++/memory:55,
from C:/Dev-Cpp/include/c++/string:48,
from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,

from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/stl_threads.h: At global scope:
C:/Dev-Cpp/include/c++/bits/stl_threads.h:69: '__gthread_mutex_t' is used as a
type, but is not defined as a type.

C:/Dev-Cpp/include/c++/bits/stl_threads.h:79:2: #error __GTHREAD_MUTEX_INIT or __GTHREAD_MUTEX_INIT_FUNCTION should be defined by gthr.h abstraction layer, report problem to libstdc++@gcc.gnu.org.
C:/Dev-Cpp/include/c++/bits/stl_threads.h: In member function `void
std::_Refcount_Base::_M_incr()':
C:/Dev-Cpp/include/c++/bits/stl_threads.h:86: `_M_ref_count_lock' undeclared

(first use this function)
C:/Dev-Cpp/include/c++/bits/stl_threads.h:86: `__gthread_mutex_lock' undeclared

(first use this function)
C:/Dev-Cpp/include/c++/bits/stl_threads.h:88: `__gthread_mutex_unlock'
undeclared (first use this function)

C:/Dev-Cpp/include/c++/bits/stl_threads.h: At global scope:
C:/Dev-Cpp/include/c++/bits/stl_threads.h:158: '__gthread_mutex_t' is used as a
type, but is not defined as a type.
C:/Dev-Cpp/include/c++/bits/stl_threads.h: In member function `void
std::_STL_mutex_lock::_M_acquire_lock()':
C:/Dev-Cpp/include/c++/bits/stl_threads.h:192: `_M_lock' undeclared (first use
this function)

In file included from C:/Dev-Cpp/include/c++/memory:55,
from C:/Dev-Cpp/include/c++/string:48,
from C:/Dev-Cpp/include/c++/bits/localefwd.h:49,
from C:/Dev-Cpp/include/c++/ios:48,
from C:/Dev-Cpp/include/c++/ostream:45,
from C:/Dev-Cpp/include/c++/iostream:45,

from C:/Dev-Cpp/Neuer Ordner (3)/Unbenannt1.cpp:1:
C:/Dev-Cpp/include/c++/bits/stl_alloc.h: At global scope:

C:/Dev-Cpp/include/c++/bits/stl_alloc.h:575: syntax error before `;' token
C:/Dev-Cpp/include/c++/bits/stl_alloc.h:575: confused by earlier errors, bailing out

Ausführung beendet


Sry wegen dem langen Auszug, weiß nicht was davon eine Rolle Spielt.

Nagilum
2003-01-06, 09:53:23
Holla, da gehts ja schwer ab. :D

DevC++ kenn ich leider nicht, aber das sieht nach ner falschen Installation oder Konfiguration aus.

Der Compiler meckert nicht über dein Programm, sondern er kann verschiedene externe Dateien nicht finden. Z.B. diese komische "c++config.h".

Sorry, aber vielleicht kann dir ja jemand helfen, der Erfahrung mit Dev++ hat.

Unregistered
2003-01-06, 12:57:49
Also ich kann das was Nagilum an code gepostet hat ohne Probleme mit dev c++ 4 übersetzen (einfach "new source file", code mit copy & paste eingefügt, strg f9 zum kompilieren). Scheint also wirklich an deiner Installation zu liegen.
Grüße, Jan

Stone2001
2003-01-06, 14:29:00
hmm, komisch, mit Dev-C++ 4 habe ich auch keine Probleme dieses kleine Programme zu übersetzen und auszuführen.
Unter DevC++5 (beta) allerdings, bekomme ich die gleichen Fehler wie Hui!
Reinen C-Code allerdings, kann ich auch mit DevC++5 compilieren und ausführen!
@Hui!: Solange bis Zeckensack uns sagt, was wir mit DevC++5 falsch machen, würde ich mal Vorschlagen auf DevC++4 auszuweichen!
Ansonsten kann ich die nur Turbo C++ 1.0 empfehlen, meiner Meinung nach die beste Entwicklungsumgebung, um solche Programme zu schreiben.

zeckensack
2003-01-06, 17:34:49
Die 4.9.7.0 hat leider ein paar ärgerliche Fehler, die Includes sind irgendwie in falschen Verzeichnissen gelandet.

Im Menü unter Tools->Compiler Options-> Directories->C++ Includes sollte folgendes stehen (Basis-Pfad natürlich anpassen):
C:\Dev-CPP\include\c++
C:\Dev-CPP\include\c++\mingw32
C:\Dev-CPP\include\c++\backward

Dann klappt eigentlich beides. Das Beispiel mit iostream ohne .h immer noch nicht so ganz, weil vor ein paar Sachen noch ein std:: gesetzt werden muß. Oder oben im Quellcode noch diese Zeile einfügen:
using namespace std;

Die Sache mit iostream.h klappt, schmeißt lediglich eine harmlose Warnung ala 'Bitte nur noch C++-Header benutzen'.



Nächste Frage:
Warum sind die EXEs so riesig?
Antwort:
Bei GCC3.2 muß man noch die Compiler-Option '-s' hinzufügen, sonst werden die Debug-Symbole mit in die EXE geschrieben. Compiler-Optionen fügt man unter 'Tools->Compiler Options->Compiler->Add these commands when calling the compiler' ein.

Fragen dieser Art werden übrigens im DevCPP-Forum (http://sourceforge.net/forum/forum.php?forum_id=48211) relativ schnell beantwortet (wenn sie klar formuliert sind !!).

HTH :)

Stone2001
2003-01-06, 17:43:40
Also bei mir hat sich jetzt diese Fehlermeldung in Wohlgefallen aufgelöst, danke zeckensack!

Tom Servo
2003-01-06, 17:55:28
Wobei man nicht dazu raten sollte iostream.h zu verwenden.

Bei Visual-Studio-6 ist das dann eine andere Bibliothek (denke mal die alte Version ohne Templates). Habe schon gesehen, dass Anfänger dann Probleme hatten weil dann die string Klasse für diese ältere iostream-Bibliothek keine Operatoren definiert.

Läuft auch darauf hinaus, dass man dann bei grösseren Projekten plötzlich beide Bibliotheken in einem Programm verwendet wenn man in unterschiedlichen Modulen einmal iostream und woanders dann wieder iostream.h benutzt.

Beim GNU Compiler ist es weniger ein Problem, aber die .h Header sind m.W. obsolete und das schon ziemlich lange.

Hui!
2003-01-06, 19:26:38
Danke Zeckensack, jetzt läufts.

Noch eine Kleinigkeit: Gibt es eine besser Möglichkeit die Programme auszuführen als mit der Eingabeaufforderung(WinXP)?
Wenn man sie normal startet verschwinden sie ja sofort wieder.

zeckensack
2003-01-06, 20:13:59
Daß das Programm auf einen Tastendruck warten soll, muß man hier zu Fuß programmieren. Also zB
getch();oder einfachsystem("pause");

Stone2001
2003-01-06, 20:14:06
Laß doch zum Schluß nochmal eine Variable einlesen! Dann wartet der Computer noch auf ein Zeichen / Tastendruck und du kannst die Ausgabe deines Programms noch ein weilchen betrachten!

Unter C füge ich immer zu Schluß an solchen Programmen immer ein getch(); an, damit sich die Eingabeaufforderung nicht gleich wieder schliest! Vielleicht gibts es für C++ einen äquivalenten Befehl?

Elemental
2003-01-07, 12:54:37
Originally posted by Stone2001
Vielleicht gibts es für C++ einen äquivalenten Befehl?


char dummy;
cin>>dummy;


mfG
Elemental