Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

25.04.2012, 21:39

0 sagt Windows, dass das Programm korrekt beendet wurde.
EXIT_SUCCESS aus stdlib.h sagt jedem Betriebssystem, dass das Programm korrekt beendet wurde.



Ist ein und das selbe ;)

C-/C++-Quelltext

1
#define EXIT_SUCCESS 0
"Wer Angst hat, dass ihm seine Ideen geklaut werden, der scheint nicht viele zu haben. "

foreach

Frischling

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

12

25.04.2012, 21:57

Ja, bei Windows hast du natürlich recht, aber das gilt nicht für jedes Betriebssystem.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

25.04.2012, 22:06

Beispiel?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

14

25.04.2012, 22:24

Könnt ja auch noch mal hier gucken.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

foreach

Frischling

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

15

25.04.2012, 22:41

Zitat

On Unix 0 mean sucess as an exit status code. On VMS, 1 was the normal exit
status code and 0 was a perfectly legal status indicating a warning. [VMS had
a much more powerful system for defining messages than Unix or Windows ever
have.] Naturally, the DEC folks wanted to have some standard method of
indicating success that would work for VMS so we get EXIT_SUCCSS and
EXIT_FAILURE.

Now that VMS is dead, these macros serve very little purpose. Using 0 for
successful completion or a non-zero value for an error is nearly universal and
portable. That is why you rarely see these macros in books.
Aber spätestens seit C90 scheint 0 auch zur systemspezifischen Konstante umgewandelt zu werden. Lediglich für einen Fehlerstatus scheint es keine portable Alternative zu EXIT_FAILURE zu geben.

Zitat

Actually, using 0 for successful termination is completely
portable to compilers that correctly implement the standard. 0
returns a successful termination status according to the
standard.

Standard C (and C++ if there are any) implementations under VMS
must do whatever it takes to return success when 0 is returned
from main.

The problem is failure. The only return from main that the
standard specifies as returning unsuccessful termination status
is EXIT_FAILURE.
Quelle

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

25.04.2012, 23:37

Also mir ist kein Betriebssystem bekannt, das den Rückgabewert eines Programmes interpretiert. Aber andere Programme können den Rückgabewert eines Programmes abfragen und interpretieren.
Es ist einfach ein ungeschriebener Standard dass der Fehlercode 0 Erfolg bedeutet...

17

26.04.2012, 17:45

Aber wenn ich return 1; schreibe dann würde das ja bedeuten, dass das Programm nicht richtig verlaufen ist aber es werden trotzdem keine Fehler angezeigt also bringt das return 0; doch gar nichts.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

26.04.2012, 17:48

Wieso? Wenn du 1 returnest, dann bedeutet das einfach nur, dass dein Programm mit dem Rückgabewert 1 beendet. Wofür dieser Wert 1 steht, musst du entscheiden. Es ist einfach nur die gängige Konvention, dass ein Programm im Erfolgsfall den Wert 0 zurückgibt...

Embio

Frischling

Beiträge: 78

Wohnort: Da wo das Gras am grünsten ist

Beruf: Student - Physik

  • Private Nachricht senden

19

26.04.2012, 19:54

Mal an einem konkreten Beispiel. Im Buch wird dir noch eine Übung begegnen, in der du ein Feld programmieren sollst, das du besetzen kannst.
So nun hast du dir eine Funktion geschrieben, in der überprüft wird, ob ein Feld bereits besetzt ist, oder nicht. Und in der main-Funktion kann man 2 Koordinaten eingeben, mit denen man sich ein Feld aussuchen kann.
Wenn das Feld frei ist, liefert die Funktion den Wert 0 zurück. Falls das Feld bereits besetzt ist, liefert es eine 1 zurück.
Wenn du jetzt in der main-Funktion deine Koordinaten eingibst, kannst du z.B. den Funktionsaufruf (von der Funktion, die das Feld überprüft) in eine Schleife packen. Du sagt deinem Programm nun, dass du solange neue Koordinaten eingibst, wie der Rückgabewert der Funktion 1 ist. Weil die 1 ja bedeutet, dass das Feld bereits besetzt ist. Sobald die Funktion eine 0 zurückgibt, verlässt das Programm die Schleife.
Hier mal wie das aussehen könnte:

C-/C++-Quelltext

1
2
3
4
5
6
do
{
//Hier erstmal die Abfrage der Koordinaten und Text, was ich mir jetzt aber spare

UeberpruefeFeld ();           //<-- Zwischen die Klammern kommen dann eigentlich deine Koordinaten, die du eingegeben hast, rein
{while (UeberpruefeFeld != 0);           //<-- solange UeberpruefeFeld etwas anderes als 0 zurückgibt wird die Schleife wiederholt


So ich hoffe ich konnte dir helfen, und hab nicht zu kompliziert geschrieben.
Sobald du zu den Funktionen kommst wird dir vieles klarer werden ;). Also einfach weiterlernen =).
Olaf Schubert: "Die katholische Kirche steckt einfach mehr in seinen Nachwuchs"

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

20

26.04.2012, 21:24

Wobei das nicht mit dem Rückgabewert der Mainfunktion zu tun hat. Wurde jetzt hier aber schon mehrfach erklärt. Ich denke es sollte klar sein. Wenn nicht dann kann sich der Threadersteller ja noch mal zu Wort melden.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige