La stratégie de l'entreprise stipule que chaque fonction du code source C a un prototype. J'ai hérité d'un projet avec son propre système make (donc je ne peux pas le tester sur gcc ou Visual Studio) et j'ai trouvé que l'un des fichiers avait des fonctions statiques déclarées sans prototypes. Existe-t-il un moyen (pas nécessairement avec un compilateur) de lister toutes les fonctions sans prototypes dans tous les fichiers .c?Comment trouver des fonctions C sans prototype?
Répondre
gcc a une option pour vous avertir à ce sujet:
gcc -Wmissing-prototypes
Vous pouvez activer cet avertissement en une erreur pour empêcher les gens de compilation et de force pour y remédier:
gcc -Werror=missing-prototypes
Si vous voulez juste pour le lister vous pouvez compiler avec l'option gcc
-Wmissing-prototypes
et grep pour aucun prototype précédent pour dans le journal.
Mise à jour sur la base modifier:
Puisque vous mentionnez maintenant que vous ne pouvez pas utiliser gcc, vous devrez trouver une option similaire pour votre compilateur en cours. La plupart des compilateurs ont une telle option. Commencez par la page de manuel ou la sortie d'aide intégrée.
Désolé si je ne l'ai pas précisé, mais il a son propre système de construction, donc je ne peux pas le tester sur gcc. – Gnubie
"build system"! = "Compilateur". Je suppose que n'importe quel compilateur utilisé par ce système de construction personnalisé (gcc/icc/clang/.......) a plusieurs options/commutateurs pour activer les avertissements/erreurs/etc. Ce serait l'endroit pour commencer, même si ce n'est pas gcc ... – twalberg
ok, je vais vérifier. Merci tout le monde! – Gnubie
ctags
peut le faire!
--c-kinds=p
génère la liste de tous les prototypes de fonction
--c-kinds=f
génère la liste de toutes les définitions de fonction
Maintenant, vous avez juste besoin de comparer ceux-ci.
diff -u <(ctags -R -x --sort=yes --c-kinds=f | cut -d' ' -f1) <(ctags -R -x --sort=yes --c-kinds=p | cut -d' ' -f1) | sed -n 's/^-//p'
+1 c'est une bonne solution! – jman
- 1. Comment étendre Ember.String sans prototype?
- 2. tableau C++ et trouver des fonctions
- 3. Javascript - Tableau des fonctions du prototype
- 4. C-fonctions dans un fichier séparé: aucun prototype précédent
- 5. Appel d'une fonction C sans le prototype
- 6. Comment ajouter des fonctions de prototype au contexte canvas
- 7. Prototype JavaScript limité aux fonctions?
- 8. Prototype Ajax.Updater Eval Javascript Fonctions
- 9. Comment trouver les valeurs "prototype" en javascript?
- 10. Liaison des fonctions personnalisées aux événements DOM dans le prototype?
- 11. Trouver des fonctions Javascript inutilisées?
- 12. Passer des fonctions Lambda C++
- 13. Comment exporter des fonctions C++ avec GCC?
- 14. Comment écrire des fonctions qui utilisent d'autres fonctions en C++
- 15. Motif de commande sans fonctions virtuelles (C++)
- 16. Prototype invoke et remplacer les fonctions ensemble
- 17. Comment grouper dynamiquement des cellules de prototype Objective - c
- 18. Fonctions de rappel de prototype avalant des exceptions
- 19. Pourquoi ajoutons-nous des fonctions au prototype javascripts?
- 20. Carte des fonctions C++
- 21. Surcharge de l'héritage C++ sans fonctions virtuelles
- 22. Expression régulière pour trouver des fonctions
- 23. Vérifier les fonctions définies natives avec prototype
- 24. Toute documentation pour appeler une fonction sans prototype en C?
- 25. Liste des fonctions C++
- 26. comment trouver des répertoires sans autorisations d'accès?
- 27. Comment trouver des tables sans clés étrangères?
- 28. Comprendre le prototype wasm wasm (WebAssembly) prototype
- 29. C# DLL noob, comment obtenir des fonctions
- 30. Comment commander des fonctions en C++?
fonctions statiques ne ont pas vraiment besoin de prototypes, à moins qu'ils sont appelés avant qu'ils ne soient définis –
@ Paul: Oui, mais je suppose que cela permet au gestionnaire de projet pour voir rapidement quelles sont les fonctions disponibles, etc. Si – Gnubie
vous ne pouvez pas utiliser un autre compilateur, pour des raisons inconnues, vous devrez obtenir un outil d'analyse statique séparé. Tous ces outils sur le marché trouveront tous les prototypes manquants pour vous – Lundin