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.
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