Dans un projet C, j'ai une fonction main() dans plusieurs fichiers. Quand je compile j'ai donc une erreur "plusieurs déclarations de main". Est-il possible de choisir dans le Makefile quelle une de ces fonctions main() devrait être utilisée pour compiler? (les autres seront alors ignorés ...)Choisir quel main() utiliser dans le Makefile
Répondre
Vous pouvez les masquer à l'aide du pré-processeur:
En fichier1.c:
#if defined FILE1_MAIN
int main(void)
{
printf("Running main() in file1.c");
return 0;
}
#endif
Cela peut être répété si nécessaire dans un certain nombre de fichiers C.
Ensuite, ayez une logique dans le Makefile qui passe l'option -D appropriée au compilateur, c'est-à-dire -DFILE1_MAIN pour inclure le main()
à partir du fichier 1, -DFILE2_MAIN pour obtenir le fichier file2.c, et ainsi de suite.
Cette technique peut également être utile lors de la mise en œuvre par ex. modules de bibliothèque, pour inclure un main()
optionnel pour tester dans un seul fichier C.
Vous ne pouvez avoir qu'une seule fonction main()
dans votre source. Vous devrez soit renommer toutes les autres instances, soit exclure les fichiers sources qui incluent d'autres instances de main()
de la construction.
Vous pouvez simplement écrire une cible pour chaque main()
, où vous ignorez tous les fichiers sauf main()
.
Merci, ça marche bien! –