WinFuture-Forum.de: Anfänger In C++ Frage Zur Ausführung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Anfänger In C++ Frage Zur Ausführung Problem mit zwei Programmen


#1 Mitglied ist offline   BlueScreen 

  • Gruppe: Mitglieder
  • Beiträge: 14
  • Beigetreten: 31. Dezember 04
  • Reputation: 0

geschrieben 08. Januar 2005 - 17:57

Hallo zusammen,
mein erster Post und gleich die totale Anfängerfrage, aber ich weiß nicht mehr was oder wo ich suchen soll.

Ich habe mich endlich rangemacht C++ zu lernen.
Nach vielen Suchen hatte ich mich für bloodshed Dev-Cpp entschieden.
Das Problem ist nun das die Beispiele von http://www.volkard.de/C++/index.html nicht gehen.
Das heist er macht das Fenster auf und es steht auch was drin, aber ich komme nicht zum lesen, da das Fenster gleich wieder zugeht.
Im dort empfohlenen MinGW Developer Studio geht es aber.
Das ist für mich als Anfänger recht rätselhaft und ich weiß nicht warum das so ist.
Hier mal das "Hallo Welt" Script von der Seite.
#include <iostream>
using namespace std;

int main(){
   cout<<"Hello, world!"<<endl;
   return 0;
}

Ich bedanke mich schon mal für die Aufklärung.
Gruß BlueScreen
0

Anzeige



#2 Mitglied ist offline   AlienSearcher 

  • Gruppe: aktive Mitglieder
  • Beiträge: 399
  • Beigetreten: 06. Juli 04
  • Reputation: 0

geschrieben 08. Januar 2005 - 18:26

Das Fenster schließt sich nach Ablauf des Programmes selbstständig wieder, das ist normal :wallbash: Verhindern kannst du das, indem du auf eine Tastatureingabe wartest. Ich würde das Problem lösen, indem ich noch ein #include <conio.h> mache und dann ganz zum Schluss des Programmes, also direkt vor dem return 0;, noch den Befehl _getch(); eintrage. Dann wartet das Programm ganz zum Schluss auf eine Tastatureingabe und bleibt dann auch solange offen :wallbash:

Kleiner Tipp: Das "using namespace std;" ist nicht gerne gesehen. Lass das lieber weg und schreibe vor das cout, usw noch ein std::

Also bei mir würde das Programm am Ende so aussehen:

Zitat

#include <iostream>
#include <conio.h>

int main(){
  std::cout << "Hello, world!" << std::endl;
  _getch();
  return 0;
}

0

#3 Mitglied ist offline   Bockfett 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.066
  • Beigetreten: 18. Februar 04
  • Reputation: 0
  • Wohnort:bei Mutti
  • Interessen:Nackt Radeln

geschrieben 08. Januar 2005 - 18:38

Du kannst dein Programm auch einfach über die Konsole starten, dann bleibt das Programmfenster auch so lange offen, wie du es willst.
0

#4 Mitglied ist offline   AlienSearcher 

  • Gruppe: aktive Mitglieder
  • Beiträge: 399
  • Beigetreten: 06. Juli 04
  • Reputation: 0

geschrieben 08. Januar 2005 - 19:10

Zitat (Bockfett: 08.01.2005, 18:38)

Du kannst dein Programm auch einfach über die Konsole starten, dann bleibt das Programmfenster auch so lange offen, wie du es willst.
<{POST_SNAPBACK}>


Das wäre dann die nicht-programmiertechnische Lösung gewesen :wallbash:
0

#5 Mitglied ist offline   Bockfett 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.066
  • Beigetreten: 18. Februar 04
  • Reputation: 0
  • Wohnort:bei Mutti
  • Interessen:Nackt Radeln

geschrieben 08. Januar 2005 - 19:26

Er wollte ja in Prinzip auch nur eine Erklärung: Zitat:"Ich weiß nicht warum das so ist..."
0

#6 Mitglied ist offline   BlueScreen 

  • Gruppe: Mitglieder
  • Beiträge: 14
  • Beigetreten: 31. Dezember 04
  • Reputation: 0

geschrieben 08. Januar 2005 - 20:19

Hi,
danke erstmal an alle. Nun bin ich ein wenig schlauer und habe gleich noch eine Frage:

Zitat

Kleiner Tipp: Das "using namespace std;" ist nicht gerne gesehen.

Wieso nicht?
In derm Kurs ist das so beschrieben und bloodshed Dev-Cpp macht das auch so.
Ich will ja nicht die gleichen Fehler wie in PHP machen. Da hatte ich ganz schön zu tun um meine ersten Scripte umzuschreiben.

Gruß
BlueScreen
0

#7 Mitglied ist offline   AlienSearcher 

  • Gruppe: aktive Mitglieder
  • Beiträge: 399
  • Beigetreten: 06. Juli 04
  • Reputation: 0

geschrieben 08. Januar 2005 - 22:50

Weil std ein namespace ist und der Sinn eines namespaces ist es, Funktionen, Klassen, Strukturen, Variablen, usw eindeutig zu benennen. Wenn du using namespace std; verwendest, fällt dies weg und du hast bei der Auswahl deiner Namen eine viel geringere Auswahl.

Wenn du es weglässt, hast du außerdem den Vorteil, dass du eindeutig weist, wo die Funktion, Klasse, usw definiert ist. Bei std::cout weist du dann hunderprozentig, dass cout zur standard Bibliothek gehört und nicht von irgendjemandem definiert wurde.

Wenn du mal in einer Firma arbeitest, wird dir auffallen, dass das da selbstverständlich ist. Da hat jeder Programmierer seinen eigenen Namespace und so weis auch jeder gleich, wer den Code programmiert hat. So verwendet dann z.B. Herr Hans Mustermann eben den Namespace "hmus" und so weis jeder, der die Funktion hmus::foobar() aufruft sofort, dass Herr Hans Mustermann die Funktion definiert hat.

Also bei kleineren Sachen wird es dir wohl nicht auffallen. Aber wenn mal mehrere Leute an dem Programm arbeiten oder das Programm allgemein groß wird, wirst du Namensräume schätzen lernen :wallbash:
0

#8 Mitglied ist offline   BlueScreen 

  • Gruppe: Mitglieder
  • Beiträge: 14
  • Beigetreten: 31. Dezember 04
  • Reputation: 0

geschrieben 09. Januar 2005 - 14:22

Danke AlienSearcher ,
das ist einleuchtend. Das werde ich in Zukunft beachten.

Gruß
BlueScreen

Dieser Beitrag wurde von BlueScreen bearbeitet: 09. Januar 2005 - 14:22

0

#9 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 21. Januar 2005 - 23:00

hehe. dieses Problem ist glaube ich das häufigste Anfänger-Problem. Ich weiss nicht wie oft ich das schon gelesen hab^^
Nun denn, ich gebe auch mal was dazu: Das Problem ist klar, das Programm wird durchlaufen und da in deinem Code kein Fehler ist, wird es auch ruck zuck mit ErrC0,0x0 beendet, was so viel heissen soll das alles glatt lief. Eine Lösung wurde ja schon vorgeschlagen, DevC++ ist auch gut für den Anfang. Für die Zeit würde ich dir aber empfehlen auf Visual umzusteigen. Da es gut ist, sich gleich an die Umgebung zu gewöhnen. Visual hat solche Pausen z.B. automatisch. Es 'wartet' bis du das Programmende bestätigst. Der debugger ist mit Sicherheit besser (hat Dev einen?), und auch sonst wirst du sehr warscheinlich in diese richtung gehen. Spätestens wenn du bei Klassen ankommst oder gar mfc ist es unumgänglich Visual zu verwenden, denn mit der Sprache sollte man auch gleichzeitig die Umgebung lernen. Wenn du allerdings noch nicht sicher bist wohin du letztendlich willst, dann nehm erstmal Dev.

cu
0

#10 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 21. Januar 2005 - 23:11

Hehe, im .NET Framework 2.0 wird für C# der neue Namespace Globals als oberster Namespace definiert, damit kann man wunderbar aus überdefinierten Methoden auf die Originale zurückgreifen.

using System.System;

function vprintf(String[] a)
{ a+=" :-)";
Globals.System.System.vprintf(a); }
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#11 Mitglied ist offline   hijack 

  • Gruppe: aktive Mitglieder
  • Beiträge: 51
  • Beigetreten: 30. Oktober 04
  • Reputation: 0
  • Wohnort:Hinterm Mond links ...
  • Interessen:PC, Musik, Party´s

geschrieben 24. Januar 2005 - 18:39

Du kannste auch einfach vor dem return 0; ein system("PAUSE"); setzen.

Sollte dann so aussehen:

system("PAUSE");
return 0;


Ich benutzte auch Dev-Cpp und bin eigentlich zufrieden damit. Ich dachte eigentlich auch immer das Debugger bei jedem Prog die selben sind (bei selber code Sprache).

Worin liegen da die unterschiede?

hijack
0

#12 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 26. Januar 2005 - 22:30

naja überwiegend an der handlichkeit und der automatischen hilfestellung. visual ab .net 2002 bietet schon deutlich mehr als dev. dev ist aber so wie ich meine auch eher was für den einstiegsbereich. es ist zwar sehr aktuell aber auch noch in absoluter entwicklung. es übersetzt programme ohne warnungen, wo der visual noch fehler anzeigt...
das sind so sachen wie das übersteigen der größe eines arrays. cpp selbst bietet da keine einschränkung daher wird wohl dev deshalb auch solche programme übersetzen jedoch liegt es auf der hand das sowas nur zu problemen führt daher meckert visual. ein weiterer nachteil wird denke ich erst bei windows programmen deutlich. mit visual lassen sich die ressourcen-dateien wirklich sehr leicht erstellen. in dev habe ich dazu gar nichts gefunden. dev ist soweit ich weiss vollständig auf die api begrenzt. naja ich weiss nicht wirklich wie es mit der jetzigen version davon aussieht, habe es seit einiger zeit nicht mehr angesehen, jedoch denke ich wird es noch nicht soweit sein. mit visual .net kann wirklich jeder, auch anfänger nicht nur profis zeit sparen. intellisense funktioniert jetzt auch endlich korrekt. da hat dev auch einige nachteile. es erkennt häufig nicht innere klassen oder strukturen in diesen mit dem punkt-operator (es funktioniert zwar hinterher^^, aber er gibts nicht vor und das kann verwirren...).

cu
0

#13 Mitglied ist offline   XDestroy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.911
  • Beigetreten: 08. August 02
  • Reputation: 0

geschrieben 26. Januar 2005 - 22:32

Zitat (hijack: 24.01.2005, 19:39)

Du kannste auch einfach vor dem return 0; ein system("PAUSE"); setzen.

Sollte dann so aussehen:

system("PAUSE");
return 0;

<{POST_SNAPBACK}>


Das ist glaube ind er stdlib definiert, daher nicht vergessen die einzubinden.. ;)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0