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

21

24.01.2009, 13:15

Zitat

ich wollte ja nur darauf hiweisen, dass wenn er keinen rückgabewert hat, sollte er void benutzen und nicht einfach das return weglassen.

Aber nicht bei main ;)
Dort lieber das return weglassen.

trash52

Treue Seele

Beiträge: 86

Wohnort: Dresden

  • Private Nachricht senden

22

24.01.2009, 13:18

ok, funktioniert dort aber auch, aber du hast bestimmt recht.

kann mir kurz jem erklären was es mit diesem standard konform auf sich hat?

LG trash52

23

24.01.2009, 13:21

Zitat von »"drakon"«

Zitat von »"PCShadow"«

@madjan06: bei dir fehlt return 0; am Ende der main.


Nein, tut es nicht. Ist optional.

wusst ich ja noch gar nicht :oops:

24

24.01.2009, 13:25

trash52:
Es gibt den C++ Standard der die Programmiersprache beschreibt. Nach diesem muss main() einen int zurückliefern. void main() funktioniert zwar bei den meisten Compilern auch, aber dieser ist nicht Standardkonform und funktioniert eben nur in den meisten Compilern und nicht in allen. [Edit] Gestrichen, da falsifiziert[/Edit]

trash52

Treue Seele

Beiträge: 86

Wohnort: Dresden

  • Private Nachricht senden

25

24.01.2009, 13:37

Genion
ich hab das jetzt so verstanden, dass es einen C++ Standard gibt, jedoch sind die meisten Compiler abwärtskompatibel und daher geben die keinen Fehler aus.

LG trash52

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

26

24.01.2009, 13:43

Zitat von »"trash52"«

ok, funktioniert dort aber auch, aber du hast bestimmt recht.

kann mir kurz jem erklären was es mit diesem standard konform auf sich hat?

LG trash52


Viele Compiler lassen das zu, obwohl es im Standard lediglich diese 2 erlaubst sind:

C-/C++-Quelltext

1
2
int main() {  }
int main(int argc, char* argv[]) {  }


Was heisst das jetzt effektiv?
1. Dein Programm ist schon von Anfang an nicht standarkonform, was
2. bedeutet, dass dein Programm nicht überall laufen muss und du dein Programm für eine anderen Implementierung umschreiben musst.

Also gleich von Anfang an richtig machen und gut-ist.

27

24.01.2009, 13:52

@drakon:
es sind nicht nur diese 2 erlaubt

Zitat

[...]
It shall have a return type of type int, but otherwise its type is implementation-defined.
[...]
All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int int main(int argc, char* argv[]) { /* ... */ }

Diese beiden sind also vorgeschrieben, die Compiler können allerdings noch andere unterstützen, solange sie int zurückgeben.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

28

24.01.2009, 14:28

Jup, habe ich übersehen. Habe allerdings auch keine Implementierung gesehen, die das anderst handhabt. ;)

29

24.01.2009, 20:00

Zitat

afaik aus dem C Standard, der dieses erlaubt.
Es gibt/gab keinen Standard für C o. C++, der dies jemals zugelassen hat. Akzeptieren sollte es ohne Warnung auch nur der VC++ 6. Der hält sich aber eh nicht an den Standard :D
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

30

25.01.2009, 00:02

Zitat von »"Deviloper"«

Zitat

afaik aus dem C Standard, der dieses erlaubt.
Es gibt/gab keinen Standard für C o. C++, der dies jemals zugelassen hat. Akzeptieren sollte es ohne Warnung auch nur der VC++ 6. Der hält sich aber eh nicht an den Standard :D

(Link)

Werbeanzeige