Est-il juste de tester un programme simple, avec ce fichier d'en-tête # inclus? Pour mieux comprendre le processus de compilation, j'écris mon propre "configure", qui teste l'existence de quelques fichiers d'en-tête et de bibliothèque.La meilleure façon de vérifier par programme l'existence du fichier d'en-tête?
Répondre
Oui, utilisez le compilateur pour compiler votre programme de test simple. C'est la meilleure et la plus simple façon de voir si le compilateur peut trouver l'en-tête. Si vous codez #include chemins de recherche, vous devrez toujours modifier et adapter pour différents compilateurs.
D'accord; Comme le note Jonathan Leffler, c'est ainsi que le fait Autoconf, qui est au moins un vote d'expérience raisonnablement fort en sa faveur. –
La suite GNU Autoconf vérifie les en-têtes en exécutant des compilations de test. Juste pour tester l'existence d'un fichier « filename.h » est assez simple:
#include <filename.h>
int main(void){return 0;}
Vous préférez peut-être guillemets au lieu de crochets. Avec le programme suivant, vous pouvez trouver l'existence du fichier d'en-tête.
#include<stdio.h>
main()
{
FILE * file;
if ((file = fopen("/usr/include/stdio.h", "r"))!=NULL)
{
fclose(file);
printf("true");
}
perror("err");
}
Critique? Nom fixe pour le fichier que vous recherchez. Emplacement fixe pour le fichier que vous recherchez. En utilisant le fichier que vous recherchez lors de la compilation du programme que vous utilisez pour le rechercher. Impression de l'état sur stdout lorsque OK et sur stderr dans le cas contraire. Ne pas retourner différents statuts de sortie pour le succès et l'échec. En utilisant archaïque C définition de main - C99 nécessite 'int main()' ou 'int main (void)', donc ce doit être le code C89 ou plus ancien. Malheureusement, seul C99 garantit un statut de sortie nul de main() lorsque vous ne mettez pas de retour explicite, donc le statut de sortie est indéfini. –
Cela ne fonctionnera pas du tout en général. –
- 1. Meilleure façon de vérifier la version du projet dépendant
- 2. La meilleure façon d'épeler vérifier un plist?
- 3. meilleure façon de vérifier la classe
- 4. La meilleure façon de vérifier alphanumérique Javascript
- 5. La meilleure façon de vérifier pour Office (Word) 2007
- 6. Meilleure façon de créer/modifier un modèle par programme
- 7. Meilleure façon de vérifier les paramètres?
- 8. Quelle est la meilleure façon de vérifier la capacité du système de fichiers en utilisant .Net?
- 9. Meilleure façon de vérifier l'état OleDbConnection
- 10. Meilleure façon de vérifier si une connexion TCP est active
- 11. Quelle est la meilleure façon de faire ce programme Java?
- 12. Quelle est la meilleure façon de télécharger un fichier externe sur un serveur via un programme
- 13. La meilleure façon de vérifier si un objet PowerShell existe?
- 14. La meilleure façon de vérifier si une URL est valide
- 15. Meilleure façon d'obtenir un pointage de crédit (par exemple, FICO) par programme
- 16. Comment vérifier l'utilisation du processeur de site Web par programme?
- 17. Quelle est la meilleure façon d'exécuter un programme Ruby à partir d'un programme Ruby?
- 18. Meilleure façon de gérer les paramètres utilisateur dans un programme
- 19. Quelle est la meilleure façon de créer le programme d'installation du service Windows .NET?
- 20. La meilleure façon d'implémenter le calendrier/programme d'événements dans RoR?
- 21. quelle est la meilleure façon de modifier le fichier csv
- 22. TeamBuild - Meilleure façon de diviser la sortie du projet
- 23. Quelle est la meilleure façon de ReadLine par Expression Tree?
- 24. Comment vérifier l'orientation du périphérique par programme dans l'iPhone?
- 25. La meilleure façon de vérifier la classe de la variable dans l'objectif C?
- 26. Meilleure façon de vérifier quand une date spécifiée se produit
- 27. Quelle est la bonne façon de remplacer par programme de très petites parties d'un fichier binaire?
- 28. meilleure façon de copier un fichier Zip via Java
- 29. Quelle est la meilleure façon de trier par date?
- 30. Meilleure façon de stocker la langue souhaitée par l'utilisateur
Vous avez le nom de fichier et la liste des répertoires inclus. Pourquoi ne pas simplement vérifier si le fichier est dans l'un d'entre eux? –
@Nikolai: une raison pour ne pas le faire est que l'en-tête 'headline' peut inclure d'autres fichiers, et il est plus difficile de vérifier si les fichiers dont il dépend sont présents en vérifiant s'ils sont tous présents essayez la compilation. –
@Jonathan: Je comprends cela. Bien sûr, cela dépend totalement de la portée du projet, mais je ferais une recherche récursive pour les directives 'include'. –