2010-11-25 4 views
2

Possible en double:
What are the valid signatures for C's main() function?Quels sont les différents prototypes valides de la fonction 'principale'?

Quels sont les différents prototypes valides de la fonction 'principale'?

Y a-t-il des prototypes non standard supportés seulement par quelques fournisseurs?

+0

Identique à [Quelles sont les signatures valides pour la fonction main() de C? ] (http://stackoverflow.com/questions/2108192/what-are-the-valid-signatures-for-cs-main-function). –

+0

certains compilateurs supportent aussi void main() – Shweta

Répondre

2

Le prototype complet autorisé par gcc est:

int main(int argc, char * argv[], char *envp[]) 

mais envp est rarement utilisé. Omettre argc et argv est également considéré acceptable.

+1

'envp' n'est pas spécifié en C. C comprend les deux listés par Alex, mais il permet" d'autres manières définies par l'implémentation ", y compris celle-là. –

+0

@Matthew: Fait intéressant, 'gcc -pedantic' ne se plaint pas de' envp'. –

+1

Bien sûr que non. Les prototypes supplémentaires standard _allows_ implémentés-définis, aussi longtemps que GCC documente le (s) paramètre (s) supplémentaire (s), il est conforme aux normes. –

3

La norme de C (§ 5.1.2.2.1) définit deux prototypes de point d'entrée:

int main(void); 

ou

int main(int argc, char **argv); 

A part cela, chaque système d'exploitation a sa propre entrée non-standard supplémentaire points. WinMain, etc.

Questions connexes