Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Die Philosophie der Funktions-Sprünge

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
03.01.2005, 11:04 Uhr
RedEagle



Da kommt man aber erst in's menü, wenn das Spiel zuende ist.

Mann kann also quasi das Aktuell laufende Spiel nicht beenden
Nur ein Spiel starten, oder das Programm beenden
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
03.01.2005, 11:41 Uhr
mike
Pinguinhüpfer
(Operator)


Ich hab auch noch ne Möglichkeit - ohne schleife

C++:
#include <stdio.h>
#include <errno.h>
#include <setjmp.h>
#include <stdlib.h>

jmp_buf snap;
void fehler(void);

int
main(void)
{
  char eingabe[255];
  long wert;
  if(setjmp(snap) != 0)
    fprintf(stderr, "jmp\n");

  printf("Spielemenü: Auswahl: ");
  fgets(eingabe, sizeof(eingabe), stdin);
  errno = 0;
  wert = strtol(eingabe, NULL, 10);
  if(errno != 0)
    fehler();

  printf("Deine Wahl %d\n", wert);
  return 0;
}

void fehler(void)
{
  puts("FEHLER");
  longjmp(snap, 1);
}


--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
03.01.2005, 11:59 Uhr
Pablo
Supertux
(Operator)


Nur ist sie POSIX Konform und nicht ANSI C.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
03.01.2005, 13:31 Uhr
mike
Pinguinhüpfer
(Operator)


öhm. sigsetjmp und siglongjmp sind POSIX.
setjmp.h ist ANSI
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
03.01.2005, 14:57 Uhr
virtual
Sexiest Bit alive
(Operator)


@mike
Ich denke, Pablo hat da recht,
abgesehen davon sollte man die Junp Routinen nicht ohne trifftigen grund einsetzen, in C++ Programmen schon garnicht, weil du damit Speicherlöcher provozierst.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
03.01.2005, 15:27 Uhr
~global
Gast



Zitat von RedEagle:
Da kommt man aber erst in's menü, wenn das Spiel zuende ist.

Mann kann also quasi das Aktuell laufende Spiel nicht beenden
Nur ein Spiel starten, oder das Programm beenden


kommt ganz drauf an wie du die funktion spiel() verlassen kannst, wenn sie zb. den status zurückgibt, ist das doch kein problem

C++:
int spiel()
{
  while(...)
  {
// hier die spieleschleife
  }
  return spielstatus; //zB. 0=ende 1=ESC gedrückt 2=irgendwas anderes
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
03.01.2005, 16:15 Uhr
RedEagle



Dann müsste es aber doch

C++:
int spiel(int spielstatus)
{
//Mach was mit dem Status (z.B. neu initialisieren)
while(/*..*/)
{
  //Spielschleife
}

//gib spielstaus nen neuen wert
return spielstatus;
}


heißen, damit die "spiel"-Funktion weiß, ob's weitergeht, oder ob das Spiel ne gestartet werden soll.
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
03.01.2005, 21:03 Uhr
mike
Pinguinhüpfer
(Operator)


@virtual: Hmm. Versteh ich nicht ganz. Laut meiner Man und meiner Bücher nicht:

Zitat:

The setjmp() and longjmp() functions conform to ISO/IEC 9899:1990
(``ISO C89''). The sigsetjmp() and siglongjmp() functions conform to
IEEE Std 1003.1-1988 (``POSIX.1'').


Mein Buch sagt:

Zitat:

In C sind normalerweise nur lokale Sprünge (mit goto) möglich. Sprünge über Funktionsgrenzen hinweg sind nicht erlaubt. Mit ANSI C wurde eine eigene Headerdatei <setjmp.h> eingeführt, die zwei Funktionen anbietet, mit denen Sprünge über Funktionsgrenzen hinweg möglich sind.
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int wert)


In C finde ichs ziemlich praktisch. Hier wurde ein Taschenrechnerdemo mit und ohne setjmp gezeigt. Es hatte schon ein paar Vorteile - die Übersicht geht zwar wie bei goto verloren, aber teilweise ist so schon recht brauchbar

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
03.01.2005, 23:15 Uhr
virtual
Sexiest Bit alive
(Operator)


@mike
Oh, tatsächlich. Sagt sogar mein standard. Bin ich doch überrascht.
Nichtsdestotrotz ist es Teufelswerk für harmlose C++ Anwendungsprogrammierer.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: