Der C11-Standard erklärt Folgendes:
5.1.2.2.1 Programmstart
Die beim Programmstart aufgerufene Funktion heißt main. Die Implementierung deklariert keinen Prototyp für diese Funktion. Es sollte mit einem Rückgabetyp von
%Vor%int
und ohne Parameter definiert werden:oder mit zwei Parametern (die hier als
%Vor%argc
undargv
bezeichnet werden, obwohl alle Namen verwendet werden können, da sie für die Funktion, in der sie deklariert sind, lokal sind):oder gleichwertig; 10 oder in einer anderen von der Implementierung definierten Weise.
10) Somit kann int durch einen
typedef
name ersetzt werden, der alsint
definiert ist, oder der Typ vonargv
kann alschar ** argv
usw. geschrieben werden / p>
Wir werden diesen Teil ignorieren: oder in einer anderen implementationsdefinierten Weise. da ich nur an Definitionen interessiert bin, die den beiden obigen Beispielen entsprechen.
Wäre dies eine gültige Definition für main, da char* a[4]
und char**
gleichwertig sind:
Wie wäre es mit einem VLA-Array? Wir nehmen an, dass printf
einen positiven int-Wert zurückgibt:
Ja, das alles wird durch das "oder Äquivalent" abgedeckt. Die Fußnote zum Umbenennen von Parametern oder zum Verwenden von typedef
ed-Typen sind nur Beispiele.
Meine Lieblingsvariante ist
%Vor% weil es die meisten Informationen über die Semantik aller main
-Funktionen enthält.
Tags und Links c standards language-lawyer c11