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

1

02.11.2009, 19:05

return bei void Funktion

wenn ich eine funktion habe:

C-/C++-Quelltext

1
 void Init () 


soll ich dann in den Funktionsrumpf ein

C-/C++-Quelltext

1
return  ;

schreiben, oder nicht ?
Was ist denn besser / dem C++ Standard "genehmer" ?

2

02.11.2009, 19:08

Re: return bei void Funktion

Zitat von »"E122"«

soll ich dann in den Funktionsrumpf ein

C-/C++-Quelltext

1
return  ;
schreiben, oder nicht ?
Nur falls nötig. Sicher nicht am Ende der Funktion.

Zitat von »"E122"«

Was ist denn besser / dem C++ Standard "genehmer" ?
Beides ist standardkonform, aber das eine oft vernünftiger. Die Leerzeichen zwischen return und dem Strichpunkt sind übrigens auch nicht notwendig.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

02.11.2009, 19:41

Das return ist in void Funktionen eigentlich nur nötig, wenn man die Funktion vorzeitig verlassen möchte. Also so an dem Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
void foo ()
{
  if ( ... )
     return;

  //.. sonst mache was

}

4

02.11.2009, 19:52

Ja dann ist die Sache ja geklärt.
Danke.

5

02.11.2009, 20:22

Man kann sich darüber Streiten, ob Vorzeitiges Verlassen guter oder schlechter Stil ist. Ich finde es gut, aber mein Info Lehrer hat darauf bestanden, dass ich z.B. bei einer Fehlerabfrage am Anfang, den eigentlichen Rest dann in einen riesigen else Zweig packe.
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

02.11.2009, 20:26

Im Sinne von "one entry, one exit" der strukturierten Programmierung ist es ja nicht gerade:
http://en.wikipedia.org/wiki/Structured_programming

Aber ich benutze es selbst auch, wenn es notwendig ist.

7

02.11.2009, 21:11

Ich finde vorzeitiges Verlassen der Funktion ebenfalls gut, sofern es Sinn macht. Gerade mit Exceptions zwingt sich das ja praktisch auf. Ausserdem wird der Code in vielen Fällen dadurch lesbarer, wie in Jonathan_Kleins Beispiel.

Das "Single Entry/Single Exit"-Konzept stammt aus C, wo man noch kein RAII kannte und frühzeitiges Verlassen gefährlich war. In C++ gibt es eigentlich keinen Grund, das einzuhalten.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

02.11.2009, 21:27

Zitat von »"Nexus"«


Das "Single Entry/Single Exit"-Konzept stammt aus C, wo man noch kein RAII kannte und frühzeitiges Verlassen gefährlich war. In C++ gibt es eigentlich keinen Grund, das einzuhalten.


Naja. Es macht das Beweisen von Code einiges einfacher, oder überhaupt erst möglich. (hmm.. langsam fangen an die Doktoranden abzufärben.. :p)

Aber in Zeitgemässem C++ Code würde ich da jetzt nicht unbedingt viel Wert drauf legen, da man das konsequent tun müsste und das passiert im Moment schlicht einfach nicht. (respektive die Beweisbarkeit hat einfach noch keinen genug grossen Stellenwert).

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

9

02.11.2009, 21:33

Re: return bei void Funktion

Zitat von »"Nexus"«

Zitat von »"E122"«

soll ich dann in den Funktionsrumpf ein

C-/C++-Quelltext

1
return  ;
schreiben, oder nicht ?
Nur falls nötig. Sicher nicht am Ende der Funktion.

Zitat von »"E122"«

Was ist denn besser / dem C++ Standard "genehmer" ?
Beides ist standardkonform, aber das eine oft vernünftiger. Die Leerzeichen zwischen return und dem Strichpunkt sind übrigens auch nicht notwendig.



öhm nur so strichpunkt den namen hab ich noch nie gehört...
ich nenns immer semikolon :)
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

10

02.11.2009, 21:56

@ drakon:
C++ ist aufgrund der Komplexität sowieso recht ungeeignet für Beweise. Wenn in einer Funktion zum Beispiel Seiteneffekte auftreten, spielt es auch keine Rolle mehr, wo die Funktion verlassen wird. Und sich immer schön an beweisbare Algorithmen zu halten, geht am Konzept der imperativen Programmierung vorbei (und hat davon abgesehen zu wenig praktische Relevanz, wie du sagst).

Wenns um solche Dinge geht, sind funktionale Sprachen genial. Ich mag zum Beispiel Haskell. :)

Werbeanzeige