2010-03-26 8 views
7

Welche Anzahl von Argumenten werden für main verwendet? Welche Varianten der main Definition sind möglich?Wie viele Argumente hat main() in C/C++

+0

Genau dort in den "Related" -Links: http://StackOverflow.com/questions/1621574/mains-signature-in-c Auch kennzeichnest du nicht mit deinem Titel. – dmckee

+0

hinzugefügt 'C++' Tag für die Konsistenz mit Titel – jschmier

Antwort

22

C++ Standard: (Source)

Der Standard sagt C 98 ++ in Abschnitt 3.6.1.2

Es wird einen Rückgabetyp vom Typ int hat, aber sonst seine Art ist Implementierung definiert. Alle Implementierungen sollen ermöglichen sowohl die folgenden Definitionen von Haupt: int main() und int main (int argc, char * argv [])

Häufig gibt es 3 Sätze von Parametern:

  • keine Parameter/void
  • int argc, char ** argv
  • int argc, char ** argv, char ** env

Wo argc die Anzahl der Befehlszeilen ist, sind argv die tatsächlichen Befehlszeilen und env sind die Umgebungsvariablen.

Fenster:

Für eine Windows-Anwendung haben Sie einen Einstiegspunkt von WinMain mit einer anderen Signatur statt Haupt.

int WINAPI WinMain(
    __in HINSTANCE hInstance, 
    __in HINSTANCE hPrevInstance, 
    __in LPSTR lpCmdLine, 
    __in int nCmdShow 
); 

OS X: (Source)

Mac OS X und Darwin haben einen vierten Parameter beliebige OS gelieferten Informationen, wie beispielsweise den Pfad zum Ausführen binären enthält:

int main(int argc, char **argv, char **envp, char **apple) 
+0

und was ist mit Auxv in Linux? – osgx

+1

@osgx: Ich bin mir nicht sicher, ob andere möglich sind, aber die oben erwähnten 3 werden von g ++ –

+0

unterstützt. Ich habe nie die Anforderung verstanden, dass 'main' return' int'. 'main' ist die einzige Funktion, die explizit einen impliziten Rückgabewert haben darf. Warum sollten Sie so weit gehen, dass "main" vorgibt, "void" zu sein, anstatt einfach zu erlauben, dass es "leer" ist? –

Verwandte Themen