dani93 hat geschrieben:Ich hab ja nichts gegen Standards. Ich finde es bloß ein bisschen komisch, dass der Standard für main "int" vorschreibt, bei Unterprogrammen jedoch nicht. Klar, wenn man nen andern Typ brauchst nimmst man char, float usw, aber ich habe gedacht, wenn es keinen Rückgabewert gibt, verwendet man "int".
Ich glaub du verwechsest was. Das was du "Unterprogramm" nennst, sind in wirklichkeit funktionen. Wenn du einen Rückgabewert hast dann gibts du ihn zurück, und deklarierst die funktion mit dem richtigen typen.
Wenn nicht, ist er void.
Main ist auch nichts anderes als eine Funktion. Allerdings ist sie der
Einstiegspunkt, und muss somit von jemandem Aufgerufen werden. Das wird vom Betriebssystem erledigt. Damit das Betriebssystem mit deiner main funktion kommunizieren kann, muss deine main funktion einem Vertrag folgen. Und dieser ist eben
Du darfst die Argumente weglassen, und auch das return statement (nur bei der main Funktion!), alles andere ist aber falsch.
Wieso manche glauben das es void ist, kommt vom (Ur)alten K&R C. Früher durfte man den typ des Parameters und der Funktion weglassen, dann wurde int angenommen. Kleines beispiel, was der gcc ohne warnungen schluckt:
Code: Alles auswählen
#include <stdio.h>
main(argc, argv)
char** argv;
{
register x;
auto y;
if (argc > 1)
printf("Argument %s\n", argv[1]);
x = 3;
y = 6;
printf ("%d + %d = %d\n", x, y, add(x, y));
return 0;
}
add(a, b, unused)
{
return a+b;
}
Vielleicht verstehst du jetzt, wieso standards so wichtig sind.
Haters gonna hate, potatoes gonna potate.