Erste Schritte in C++

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
georg
Beiträge: 276
Registriert: 24.01.2004 10:42:06
Wohnort: Bottrop

Erste Schritte in C++

Beitrag von georg » 23.12.2005 12:51:27

Hallo Debianer,

ich habe vor langer Zeit mal in Turbo Pascal programiert. Ich möchte mich jetzt in C++ versuchen. Na ja, ein Handbuch gekauft und los gehts. Nun habe ich schon beim ersten Miniprogram probleme mit gcc. Ich erhalte folgende Fehlermeldungen:

first.cpp:4: error: `main' must return `int'
first.cpp:6:2: Warnung: Kein Newline am Dateiende


Mein Miniprogram sieht wie folgt aus:
  • #include <iostream.h>

    void main ()
    {
    cout <<"Das ertse C++ Programm.";
    }
Was mache ich verkehrt?

Ich hoffe mir kann geholfen werden, es wäre schade wenn die ersten Mühen im Keim ersticken würden.

M.f.G.

Georg Kappenberg
Gut das es auch ohne Bill Gates geht!!!

Intel Celeron 540 1,86 GHz <> RAM 2,0 GB <> DEBIAN SID Kernel 2.6.32-5-686 <> Gnome 3.0.2

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Re: Erste Schritte in C++

Beitrag von BeS » 23.12.2005 13:04:27

Hallo,
georg hat geschrieben:Nun habe ich schon beim ersten Miniprogram probleme mit gcc.
C++ Code solltest du mit g++ übersetzen nicht mit dem gcc.
Ich erhalte folgende Fehlermeldungen:

first.cpp:4: error: `main' must return `int'
first.cpp:6:2: Warnung: Kein Newline am Dateiende
Die Meldung sagt doch im Prinzip alles, main sollte nicht void sondern den Rückgabewert int haben und jede Quelldatei sollte am Ende noch eine newline (Leerzeile) haben. Vernünftige Editoren/IDEs wie Emacs achten schon von selber darauf ;)

Ausserdem verwendet man keine .h files mehr in C++. Korrekt wäre dein Programm so:

Code: Alles auswählen

#include <iostream>

int main ()
{
    std::cout <<"Das ertse C++ Programm.";
    return 0;
}
jetzt mit dem g++ übersetzen und alles sollte funktionieren.

PS: Ich habe den Thread mal nach "Softwareentwicklung und -paketierung, Scripting" verschoben, ich denke hier passt er besser hin.
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
georg
Beiträge: 276
Registriert: 24.01.2004 10:42:06
Wohnort: Bottrop

Beitrag von georg » 23.12.2005 13:11:11

Das war es.

Kann ich grundsätzlich die h.files durch die anderen ersetzen?

Herzlichen Dank für die prompte Hilfe.

Georg
Gut das es auch ohne Bill Gates geht!!!

Intel Celeron 540 1,86 GHz <> RAM 2,0 GB <> DEBIAN SID Kernel 2.6.32-5-686 <> Gnome 3.0.2

Benutzeravatar
uljanow
Beiträge: 529
Registriert: 20.09.2005 21:14:00

Beitrag von uljanow » 23.12.2005 13:29:00

laut c++ ansi/iso 98 standard kann man ".h" weglassen. es sei denn du verwendest n alten compiler, der nicht ansi-konform ist.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 23.12.2005 14:29:18

georg hat geschrieben:Das war es.

Kann ich grundsätzlich die h.files durch die anderen ersetzen?
Bei allen Standard C++-Headern ja (es gibt eine Datei "iostreams") sowie bei C-Standard-Headern, wenn du sie unter C++ benutzt, dann nur ein c davorstellen: "#include <math.h>" -> "#include <cmath>"

Bei third-party-libraries musst du natürlich die Dateien so includieren, wie sie heißen. meistens ".hpp" oder ".h". Header ohne Dateinamenserweiterung sind nur die Standardheader.

PS: Wenn du alte Tutorials liest, die z.B. iostream.hpp includieren, und du das in iostream änderst, musst du noch "using namespace std;" dazuschreiben bzw "cin", "cout", "endl", etc durch "std::cin",... ersetzen

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 23.12.2005 14:45:14

Joghurt hat geschrieben:Header ohne Dateinamenserweiterung sind nur die Standardheader.
nicht unbedingt. Qt4 header haben auch kein .h mehr. Sie wollen sich wohl langsam als "Standard" einschleichen ;)
PS: Wenn du alte Tutorials liest, die z.B. iostream.hpp includieren, und du das in iostream änderst, musst du noch "using namespace std;" dazuschreiben bzw "cin", "cout", "endl", etc durch "std::cin",... ersetzen
wobei ein "using namespace std;" imho irgendwie gegen den eigentlichen Sinn verstößte. Warum sollte man alles schön in Namespaces ordnen wenn man dann als erstes diese wieder "auflöst"? Also ich empfehle den Namespace immer mit an zu geben, ist ja jetzt auch nicht soviel schreibarbeit und man weiß dann immer woher eine Funktion kommt.
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 23.12.2005 15:10:39

BeS hat geschrieben:wobei ein "using namespace std;" imho irgendwie gegen den eigentlichen Sinn verstößte. Warum sollte man alles schön in Namespaces ordnen wenn man dann als erstes diese wieder "auflöst"? Also ich empfehle den Namespace immer mit an zu geben, ist ja jetzt auch nicht soviel schreibarbeit und man weiß dann immer woher eine Funktion kommt.
Klar, ich sprach ja auch nur von Tutorials, die noch zu nicht-Namespacezeiten geschrieben wurden. Da ist es egal, denn wer ein Tutorial als Vorlage für ein produktives Programm nimmt, hat es nicht anders verdient ;)

Benutzeravatar
georg
Beiträge: 276
Registriert: 24.01.2004 10:42:06
Wohnort: Bottrop

Beitrag von georg » 23.12.2005 21:46:15

Ich sehe schon es wird ein langer Weg bis zum ersten C++ Program. Ich habe mir vor langer Zeit das Grunbdlagenbuch C++ von Data Becker geholt. Es scheint nicht so ganz unter Linux zu passen. Kann mir jemand ein gutes Buch für Anfänger unter Linux empfehlen?

Dank für eure Mühen. Schöne Feiertage

Georg
Gut das es auch ohne Bill Gates geht!!!

Intel Celeron 540 1,86 GHz <> RAM 2,0 GB <> DEBIAN SID Kernel 2.6.32-5-686 <> Gnome 3.0.2

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 23.12.2005 22:21:22

Hallo,
also gerade auch wenn man nicht so viel ausgeben will, kann ich dieses Buch empfehlen[0]. Das bringt einen eigentlich weit genung um den Rest mit learning-by-doing zu lernen.


[0] C++ Objektorientiertes Programmieren von Anfang an
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

sowatt
Beiträge: 117
Registriert: 14.03.2003 15:22:56
Wohnort: Hamburg

Beitrag von sowatt » 24.12.2005 03:33:44

Moin,
oder schau mal hier nach:
http://www.cpp-entwicklung.de/cpplinux/ ... _main.html

Das kannst Du auch per wget, lokal, auf deinen Rechner holen.

Ein gutes Forum wäre dann : http://www.mrunix.de

Und hier solltest Du alle Hilfe, inkl. Tutorials, finden:
http://www.c-plusplus.de/

Preiswerte Bücher bekommst Du u.a. bei http://www.terrashop.de

Mir hat das alles sehr gut geholfen, bisher(bin auch gerade C++ Anfänger).

MfG
sowatt

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 24.12.2005 11:35:15

hi,

gemäss dem Fall du willst etwas mehr ausgeben ( is ja grad Weihnachten ;-) ) finde ich das Buch "Praktische C++ Programmierung" [1] sehr gut. Ich habe damit auch meine Prüfung (in de Schule) in C++ geschaft ;-) Das Buch gibt eigentlich in Einblick in das ganze C++ Umfeld.
Spezielle Bücher für C++ unter Linux kann ich weniger empfehlen, ich konnte mittlerweile ein paar in unserer Uni-Bibliothek anschauen, die waren alle net so besonders, das sich der Preis lohnen würde.
mfg
Mauser

[1]http://www.oreilly.de/catalog/cplus2ger/

Benutzeravatar
uljanow
Beiträge: 529
Registriert: 20.09.2005 21:14:00

Beitrag von uljanow » 24.12.2005 11:47:04

ich würd c++ in 21 tagen empfehlen. es gibt einen guten überblick über die sprache und ist auch für anfänger geeignet.

aber eigentlich braucht man nur EIN buch. das vom meister persönlich "Bjarne Stroustrup - The C++ Programming Language (Special 3rd Edition)". es ist zwar englisch, aber wohl die bibel für jeden c++ programmierer.

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 24.12.2005 11:48:31

aber der Stroustroup ist nicht wirklich für einen C++ Anfänger geeignet ;-)
mfg
mauser

PS: (gibts aber doch auch auf Deutsch...)

microtux
Beiträge: 15
Registriert: 26.12.2005 14:20:31

Beitrag von microtux » 26.12.2005 15:21:00

Morgen Georg!

Würd dir empfehelen, anstatt cin und cout printf und scanf zu verwenden!

Es scheint zwar jetzt am Anfang etwas schwerer zu sein, vor allem mit dem Einlesen von Sätzen und dergleichen, aber wenn du später Richtung C++/C# und somit dem objektorientieren gehen möchtest, hast du damit auf jeden Fall Vorteile!

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 26.12.2005 15:47:25

hallo,
  1. Bjarne Stroustrup - The C++ Programming Language (Special 3rd Edition) ist sehr gut. Für einen Anfänger aber Unsinn da es zu komplex ist.
  2. Für einen Anfänger gibt es denke ich nichts besseres als das
markus

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 26.12.2005 16:06:18

microtux hat geschrieben: Würd dir empfehelen, anstatt cin und cout printf und scanf zu verwenden!

Es scheint zwar jetzt am Anfang etwas schwerer zu sein, vor allem mit dem Einlesen von Sätzen und dergleichen, aber wenn du später Richtung C++/C# und somit dem objektorientieren gehen möchtest, hast du damit auf jeden Fall Vorteile!
Örks? Was denn? Wennschon würde ich empfehlen unter C++ *nicht* printf und scanf zu verwenden.
Ich meine mit Objektorientierung haben die sicher nix am Hut. Und Typsicher sind die auch nicht...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 26.12.2005 16:31:31

@peschmae
ACK - die Typen Repräsentation wird bei C++ intern geregelt.

cin, cout, cerr sollten anstatt prinf etc. verwendet werden - dazu wurden Sie eingeführt
Man kann so auf Platzhalter etc. verzichten.

@microtux
wenn du später Richtung C++/C# und somit dem objektorientieren gehen möchtest, hast du damit auf jeden Fall Vorteile!
kannst du das bitte erläutern - ich verstehe nicht was du meinst

markus

Antworten