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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

08.01.2007, 17:46

Zitat von »"Deviloper"«

Na mach es richtig schick:

C-/C++-Quelltext

1
2
3
4
5
6
7
#include <iostream>

int main(void)
{
    std::cout << "Hallo Welt!" << std::endl;
    return 0;
}

Endl bringt nur einen Vorteil, der Puffer wird geleert, aber ok. Return 0 kannst dir aber schenken. Und das void hinter main... Ich fürchte das ist falsch, wenn man sich korrekt an den Standard halten will.
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

08.01.2007, 19:48

nein

C-/C++-Quelltext

1
(void)

als parameterliste ist erlaubt ;)

Zitat von »"C++ Standard"«

If the parameter-declaration-clause is empty, the function takes
no arguments. The parameter list (void) is equivalent to the empty parameter list.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

13

08.01.2007, 19:58

gibt es da irgendeinen Unterschied? bzw einen Vorteil? Ich weiß, das Patrick das immer stark vertreten hat und ich habs mir inzwischen auch angewöhnt weils mir vom Stil gut gefällt, aber gibts nen Grund es so oder so zu machen?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

08.01.2007, 20:11

Zitat von »"rewb0rn"«

gibt es da irgendeinen Unterschied? bzw einen Vorteil? Ich weiß, das Patrick das immer stark vertreten hat und ich habs mir inzwischen auch angewöhnt weils mir vom Stil gut gefällt, aber gibts nen Grund es so oder so zu machen?


Nein! Der Unterschied ist das ein leerer Typ in der Parameterliste steht, aber im Endeffekt kommts hier aufs gleiche raus.

grüße
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

08.01.2007, 20:15

es gibt keinen besonderen grund das so zu machen. reine geschmackssache.
ich hab das in meinen anfängen auch so gemacht, weils mir gut gefallen hat. irgendwann hab ich damit dann wieder aufgehört...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

08.01.2007, 21:12

nach ein bisschen diskutieren, sind David_pb und ich zum schluss gekommen, dass die frage ob main(void) nun erlaubt ist oder nicht aus dem standard nicht zu 100% herausgelesen werden kann (zumindest konnten wir bisher nichts finden, das dies explizit festlegen würde).
main ist zwar klar als funktion definiert und für funktionen gilt die (void) regel, aber im abschnitt über main wird die main(void) variante nicht erwähnt.

funktionieren wird es aber vermutlich fast überall.

nur um das klarzustellen.

17

09.01.2007, 14:05

zurück zum Code...

warum nicht auch so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;

int main()
{
cout<<"Will Bier!!"<<endl;

return 0;
}
----------------------------------------------------
// Rechtschreibung? Ist das eine neue Programmiersprache?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

18

09.01.2007, 14:17

Zitat von »"EVIL-WAX"«

zurück zum Code...

warum nicht auch so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;

int main()
{
cout<<"Will Bier!!"<<endl;

return 0;
}


Weil using namespace (in den meisten Fällen) totaler Mist ist. In dem Fall macht es zwar keine großen Schwierigkeiten, aber man sollte sich sowas garnicht erst angewöhnen. Und return 0 kann man sich, wie gesagt, sparen.

grüße
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

19

09.01.2007, 14:36

Zitat von »"David_pb"«

Weil using namespace (in den meisten Fällen) totaler Mist ist.


Würde ich so nicht verallgmeinern.. Ich benutz es zwar auch nicht, aber wenn man weiß, was man tut kann man sich damit schon etwas Tipparbeit sparen. Das Problem ist halt, wenn du eine Namensdoppelung hast, also du verwendest mit using zB 2 Namespaces, und die haben beide für ein Objekt oder eine Funktion den selben Namen, oder du verwendest mit using nur 1 Namespace, aber zufällig suchst du dir einen Namen aus, der in diesem Namespace schon vergeben ist, dann führt es halt zu Fehlern. Aber ob das wirklich so häufig vorkommt ist fraglich. Letztendlich ne Geschmackssache :)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

20

09.01.2007, 14:41

Ich sag ja, in den meisten Fällen. Sinnvoll eingesetzt kann es durchaus hilfreich sein, oder z.B. lokal:

C-/C++-Quelltext

1
2
3
4
5
6
void foobar()
{
  using namespace boost;

  function< void > xyz ( bind( xyz, _1, _2, _3 )() ); 
}


Aber global angewendet untergräbt es einfach den Sinn von Namespaces und sollte daher erst garnicht so verwendet werden. Im Endeffekt läuft es auch nicht auf Geschmackssache hinaus sondern eher auf endlose Debugsessions die man schnell bei großen Projekten bekommt.

Ganz schlimm wirds wenn Leute meinen using namespace in Headern verwenden zu müssen! Dann bekommen Bibliotheksbenutzer den Unsinn aufgezwungen, was ganz übel ist.

Also, wenn sich ein using namespace vermeiden lässt, sollte man dies auch tun.

grüße
@D13_Dreinig

Werbeanzeige