Dupliqué possible: strong>
c Void Arguments P>Je viens de commencer avec c et je ne trouve pas de réponse à cette ... p>
y a-t-il une différence entre p>
xxx pré> lequel dois-je Préfère et pourquoi? p>
Notez que cette question va également pour:
int Page principale code>. Devrait-il être:int Page principale code> ouint Main (VOID) CODE> Quand je ne veux pas d'arguments de ligne de commande? P> blockQuote>
6 Réponses :
Nope, pas de différence. Certains anciens compilateurs de C se plaint de l'absence de vide dans ce cas, mais il n'y a aucune raison de le faire dans le C ++ moderne. P>
Lequel devrais-je préférer? Il faut sûrement être celui que tout le monde utilise! J'ai même téléchargé le code source code> Coreutils code> pour vérifier, mais chaque principal code> a une argument de ligne de commande!
Pas vrai. Voir Stackoverflow.com / Questions / 416345 / ...
Ils sont identiques, mais préférés one est int foo () {} code> p>
Pourquoi est-ce que cela préféré? Il vous permet de passer un objet de type Rubbish_t à la fonction FOO ().
Ils ne sont pas les mêmes pour un compilateur C. FOO (void) signifie que la fonction prend zéro argument. FOO () signifie que la fonction prend un nombre inconnu d'arguments.
Il n'y a pas de différence entre les déclarations. P>
Si vous écrivez et de même, en cas de int Main (void) code>, cet instructeur indique au compilateur que principal code> ne contient aucun argument. P>
principal () code> ou int Main () code>, à nouveau, le compilateur comprend principal code> ne contient aucun argument. Mais, dans le premier cas, vous racontez avec force le compilateur, tandis que dans la deuxième déclaration, le compilateur comprend automatiquement. P>
Pas vrai. FOO (void) signifie que la fonction prend zéro argument. FOO () signifie que la fonction prend un nombre inconnu d'arguments. Voir Stackoverflow.com / Questions / 416345 / ...
Si vous utilisez ou non des arguments de ligne de commande, la signature de la principale () inclut les paramètres permettant d'accéder aux arguments de ligne de commande. p>
Voir la signature comme contrat avec l'appelant et non une annonce de la mise en œuvre utilisée réellement. P>
Les deux formes canoniques de Autres sont spécifiquement autorisé, mais ce sont les personnes requises. p> sur la forme préférée entre Il y a aussi une différence subtile. C99 Section 6.7.5.3 "Déclarateurs de fonction", paragraphe 10, États: P> Le cas particulier d'un paramètre non nomé de type vide comme seul élément de la liste
Spécifie que la fonction n'a aucun paramètre. P>
blockQuote> paragraphe 14 de la même section montre la seule différence: p> Une liste d'identifiant ne déclare que les identificateurs des paramètres de la fonction. Une liste vide dans un déclarant de fonction qui fait partie d'une définition de cette fonction spécifie que la fonction n'a aucun paramètre. La liste vide dans un déclarant de la fonction qui ne fait pas partie d'une définition de cette fonction spécifie qu'aucune information sur le nombre ou les types des paramètres n'est fournie. P>
blockquote> En d'autres termes, cela signifie la même chose que que signifie que: p> est valide mais: p> n'est pas. p> p> p> principales code> sont, selon la norme (voir C99 Section 5.1.2.2.2 "Démarrage du programme"): FN (VOID) code> et fn () code>, je préfère le premier depuis J'aime énoncer explicitement qu'il n'y a pas de paramètres. P>
void code> dans la définition de la fonction mais pas em> signifie que dans un déclarateur autonome (c.-à-d. Le prototype) . int fn (); code> signifie qu'aucune information sur les paramètres n'est encore connue mais int fn (void); code> signifie qu'il n'y a pas de paramètres. P>
Merci pour votre réponse. Où puis-je télécharger la norme de juste pour référence? Je semble frapper des liens payants lors de la recherche.
Le mieux que vous puissiez faire gratuitement est probablement au bas de la page Wikipedia en.wikipedia.org/wiki/ C99 ou un lien direct Open-std .org / jtc1 / sc22 / wg14 / www / docs / n1256.pdf - C'est le brouillon de C99 + TCS 1, 2 et 3. C'est une lecture assez sèche cependant :-)
Merci pour une réponse géniale.
En plus de Réponse de Paxdiablo , qui couvre le langage C et donc la question de l'OP, il peut être intéressant de noter que "style vide" est considéré comme une mauvaise pratique en C ++, au moins par Bjarne Stroustrup. P>
Les raisons des raisons pour lesquelles sont purement liés au style, mais l'utilisation de void comme paramètre de fonction a été réellement bannie de C ++ au début de la normalisation de l'ISO. La syntaxe vide a finalement été autorisée à fournir une compatibilité avec c. P>
SO SOIT SUIVER CE QUI UP: P>
F (vide) code> car il applique une dactylographie plus stricte (argument rationnel) li>
- dans les programmes C ++, utilisez
f () code> ou vous contrariera divers gourus C ++ (argument irrationnel) li>
ul>
Questions similaires: y a-t-il une différence entre foo (vide) et foo () en C ++ ou C et c Void Arguments