2010-03-26 11 views
7

Quels sont les arguments utilisés pour main? Quelles variantes de main définition est possible?Combien d'arguments a main() en C/C++

+0

Juste là dans les liens "connexes": http://stackoverflow.com/questions/1621574/mains-signature-in-c En outre, vous étiqueter est incompatible avec votre titre. – dmckee

+0

ajouté tag 'C++' pour la cohérence avec le titre – jschmier

Répondre

22

C++ Standard: (Source)

Le C++ 98 norme dit dans la section 3.6.1.2

Il a un type de retour de type int , mais sinon son type est défini par l'implémentation. Toutes les mises en œuvre doivent permettre à la fois les définitions suivantes des principaux: int main() et int main (int argc, char * argv [])

Généralement il y a 3 ensembles de paramètres:

  • aucun paramètre/void
  • int argc, char ** argv
  • int argc, char ** argv, char ** env

argc est le nombre de lignes de commande, argv sont les lignes de commande réels et env sont les variables d'environnement.

Fenêtres:

Pour une application de fenêtres que vous avez un point de WinMain d'entrée avec une signature différente au lieu de principal.

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

OS X: (Source)

Mac OS X et Darwin ont un quatrième paramètre contenant l'information fournie par l'OS arbitraire, tel que le chemin d'accès à l'exécution binaire:

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

et qu'env? – osgx

+1

@osgx: Je ne suis pas sûr si d'autres sont possibles mais les 3 mentionnés ci-dessus sont supportés par g ++ –

+0

Je n'ai jamais compris l'exigence que 'main' retourne' int'. 'main' est la seule fonction explicitement autorisée à avoir une valeur de retour implicite. Pourquoi sortir de votre façon de permettre 'principal 'de prétendre être« vide », plutôt que de simplement laisser« vide »pour commencer? –

Questions connexes