Implémentation de la fonction dans un Fichier Distinct
Quelle est la bonne syntaxe pour avoir implémentation de la fonction dans un fichier séparé? Par exemple:
foo.h
int Multiply(const int Number);
foo.cpp
#include "foo.h"
int Multiply(const int Number)
{
return Number * 2;
}
Je vois ce beaucoup utilisé, mais quand je l'ai essayer j'obtiens une erreur d'avoir à faire avec un manque main()
fonction. J'obtiens la même erreur lorsque j'essaie de compiler code de travail.
Vous devriez avoir mentionné que c'est censé être une bibliothèque sans un principal. Il suffit de changer le type de configuration de votre projet, si vous utilisez Visual Studio, pour une bibliothèque.
OriginalL'auteur Maxpm | 2010-12-07
Vous devez vous connecter pour publier un commentaire.
En gros, vous devez avoir une fonction main() à l'intérieur de l'un de vos fichiers C++ vous compilation.
Que le compilateur dit, vous avez juste besoin d'avoir une méthode main() à l'intérieur de votre foo.cpp comme:
Ou vous pouvez séparer votre principale fonction dans un autre fichier, comme ceci (sans le main() bloc de foo.cpp si vous avez l'intention de le faire):
Puis le compiler comme
main
fonction doit retourner quelque chose? Aussi, je ne vois pasmain
n'importe où dans monapstring.cpp
fichier (qui complimenteapstring.h
).Généralement ce que les gens font est de séparer la fonction principale et l ' "aide" des fonctions. Voir mon edit
Pourquoi est-il que, dans main.cpp "foo.h", et pas "foo.cpp".Parce que foo.cpp est ce que la définition de la fonction, et il comprend aussi foo.h.Alors pourquoi ne pas inclure "foo.cpp" dans main.cpp
OriginalL'auteur Andreas Wong
Chaque programme en C++ est une collection d'un ou de plusieurs unités de traduction, aka fichiers sources.
Après ces fichiers sont compilés, les de l'éditeur de liens recherches pour le point d'entrée de votre programme aka le
int main()
fonction. Car il ne parvient pas à le trouver, il vous donne une erreur.N'oubliez pas que la construction du programme donne un fichier exécutable. Un fichier exécutable sans un point d'entrée est un non-sens.
Ensuite, il devrait être construit comme une .lib ou .dll (windows). Bien qu'un fichier dll peuvent aussi avoir un point d'entrée
OriginalL'auteur Armen Tsirunyan