Y a-t-il une différence entre #include "./test.h"
et #include "test.h"
pour le préprocesseur C/C++?directive #include: différence entre "test.h" et "./test.h"
Répondre
Non, il n'y a aucune différence.
Vous pourriez aussi avoir
#include "../thisdir/test.h"
Et ce serait la même
Selon la norme C, il n'y a pas de différence: le compilateur obtient de spécifier la façon dont ils sont recherchés. En pratique, il ne devrait pas y avoir de différence non plus pour les implémentations dont je suis au courant.
À mon avis, il existe une différence importante.
Dans le cas de #include "test.h"
, le fichier d'inclusion est recherché dans tous les répertoires spécifiés au compilateur avec l'option -I.
Dans le cas de #include "./test.h"
, seul le répertoire résidant du fichier de référence est utilisé.
Isnt l'option -I – Tom
@Tom, en supposant que l'on parle de gcc, -I spécifie les répertoires pour rechercher à la fois "" et < > comprend. Vous pouvez utiliser -isystem pour spécifier les chemins qui ne doivent être recherchés que pour les chevrons. –
Pas vrai. Les deux vont toujours chercher dans tous les répertoires. Juste que "" va chercher les répertoires locaux avant de regarder ceux spécifiés avec -I – sep
Les deux styles seront traités de la même manière par le pré-processeur. La pratique standard est
#include "test.h"
et de transmettre le chemin d'accès au fichier include en tant qu'option au compilateur. (Par exemple, l'option -I de GCC). Cela facilite le changement de l'emplacement des fichiers d'en-tête. Vous avez juste besoin de faire un seul changement dans le fichier make du projet.
- 1. include directive
- 2. Quelle est la différence entre include et extend dans Ruby?
- 3. include directive et <jsp:include> problème de nom d'attribut
- 4. Différence entre admin.site.root et admin.site.urls
- 5. Différence entre sqlreader et
- 6. Différence entre -Wconversion entre gcc et g ++
- 7. Différence entre DECLARE_DYNAMIC et DECLARE_DYNCREATE?
- 8. Différence entre JNLP et JavaFX
- 9. Différence entre Session et HttpContext.Current.Session
- 10. Différence entre HTTPContextBase.User et MembershipUser
- 11. Différence entre FileStreamResult et FilePathResult?
- 12. Différence entre Delegate.Invoke et délégué()
- 13. Différence entre scanf() et fgets()
- 14. Différence entre DataGrid et GridView
- 15. Différence entre "__method__" et "méthode"
- 16. Différence entre BOOST_CHECK_CLOSE et BOOST_CHECK_CLOSE_FRACTION?
- 17. Différence entre "\ n" et Environment.NewLine
- 18. Différence entre Roles.GetRolesForUser et Roles.Provider.GetRolesForUser?
- 19. Différence entre val() et text()
- 20. Différence entre control.Attributes.Add et control.Attributes []
- 21. Différence entre value et itemvalue
- 22. Différence entre Send.nc et SendMsg.nc
- 23. Différence entre System.Web.Cache et HTTPContext.Curent.Cache
- 24. Différence entre feature et plugin.xml?
- 25. Différence entre l'exception d'application et l'exception système
- 26. Différence entre iCalendar (.ics) et vCalendar (.vcs)
- 27. Objective-C: différence entre id et void *
- 28. Différence entre un objet et un hachage?
- 29. Différence entre Gridview et Datagrid dans Asp.net
- 30. Différence C++ entre 0 et 0,0
Vous devriez changer tous vos #includes si vous avez renommé le répertoire par –
Et si j'ai fait "../../thisdir/test.h", ce serait un cauchemar :) – Tom