Si le prototype de fonction en C soit dans le principal ou avant la principale. J'ai été appris avant la principale, mais mon livre de classe d'amis le montre à la main. Quelle est la bonne voie?
Son livre le montre: P>
int main()
{
void numberTable();
numberTable();
}
void numberTable()
{
int num;
...rest of the code...
}
5 Réponses :
Les deux sont corrects.
Si vous ajoutez la déclaration de fonction à l'intérieur principal, sa portée est à l'intérieur du principal { code> } code>.
Si vous l'ajoutez à l'extérieur principal, sa portée est l'ensemble du fichier source. P>
Est-il préférable de le mettre avant la principale? Je me demandais juste parce que mon professeur avait besoin de toutes les fonctions à déclarer avant le principal et que je me demande si cela est nécessaire
Je dirais que c'est mieux style de mettre des prototypes à la portée du fichier, en dehors de tout organisme de fonction. Vous peut i> avoir un prototype dans une fonction, voire à l'intérieur d'un bloc, mais qui limite la visibilité du prototype à ce bloc, ce qui est une chose étrange à faire. Pour des programmes plus importants avec plusieurs fichiers source, la plupart des prototypes de fonction vont être dans des fichiers d'en-tête.
Exactement! Pas faux i>, juste assez étrange. Cette réponse + keiths commentaire = bonne réponse.
K & R a des exemples qui déclarent des fonctions à l'intérieur d'autres fonctions. Ce qui ne veut pas dire que c'est une bonne référence sur style i>, mais si c'est dans K & R, c'est au moins légal C.
La raison de définir la fonction avant la principale est d'éviter la déclaration de fonction qui serait nécessaire si vous définissez la fonction après la principale. Il est courant que les modules C puissent être codés dans ce style, c'est-à-dire les fonctions définies dans l'ordre de dépendance, afin d'éviter la nécessité de déclarer des fonctions locales (nous devrions faire attention à la manière dont nous utilisons la portée des mots ici - la portée n'est pas appliquée par la lieur C). P>
L'une de toute façon peut être faite pour fonctionner. Déclarations extérieures Lorsque vous déclarez la fonction à l'intérieur Si vous avez plusieurs fichiers source impliqués, les règles deviennent plus simples. Toutes les fonctions appelables à partir d'autres fichiers doivent être déclarées dans un en-tête ( Main () Code> (ou, plus généralement, en dehors de toute fonction) conduit généralement à moins de répétitions. P>
principal () code>, cette déclaration ne s'applique que dans principal () code>. Si une autre fonction (par exemple, fonction_1 () code>) appelle également la fonction correspondante (par exemple, Numbertable () code>) et apparaît avant que l'autre fonction soit définie, vous devez déclarer < Code> Numéraire () Code> Intérieur Function_1 () Code> Aussi (violer le sec: Ne vous répétez pas, et aussi sur place: point de vérité unique). Si, d'autre part, la déclaration de NumberTable () code> était en dehors de toute fonction et avant toute fonction dans le fichier, toutes les fonctions peuvent utiliser la déclaration une seule déclaration. P>
Header.h code>). Cet en-tête doit être inclus dans chaque fichier qui fait référence à l'une des fonctions déclarées dans l'en-tête, ainsi que dans chacun des fichiers définissant chacune des fonctions déclarées dans l'en-tête. L'en-tête doit être inclus en dehors de toute fonction dans les fichiers où elle est utilisée. (La norme C nécessite ceci pour les en-têtes standard.) Cela garantit que tout le code a une vue cohérente de la déclaration de chaque fonction. Finalement, vous arriverez à des programmes assez importants qu'il peut même y avoir plusieurs en-têtes. Les mêmes règles de base s'appliquent - Déclarez des fonctions dans les en-têtes; Inclure les en-têtes (en dehors de toute fonction) où les fonctions sont utilisées et définies. (Voir aussi Que sont extern code> variables en C .) p>
Les deux sont corrects; Cependant, ce n'est pas un bon style en réalité.
Une bonne pratique courante: mettez toutes ces fonctions Déclaration et définition dans d'autres en-têtes et fichiers source: Header.h code> + Header.c code> p> p> p>