Salut,
pouvez vous me dire quelle est la différence entre
#include <stdio.h> et #include "stdio.h"
A+
Salut,
pouvez vous me dire quelle est la différence entre
#include <stdio.h> et #include "stdio.h"
A+
<> : le préprocesseur cherche en premier dans les chemins spécifiés par l'option INCLUDE du compilateur et ensuite dans la variable d'environnement INCLUDE.
"" : le préprocesseur cherche en premier dans le même répertoire que le fichier qui contient la directive #include et ensuite dans tous les répertoires de tous les fichiers qui ont inclus ce fichier et enfin cherche selon les régles de <>
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Salut,
Je raisonnerai plutot de la façon suivante : si on utilise les < > c'est pour inclure un header de la bibliotheque standard ou d'une bibliotheque installée sur le systeme, tandis que si on utilise les " " c'est pour inclure un header d'un source du projet
Gruik a très bien résumé la chose ! (explication beaucoup plus pragmatique)
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Attention, la norme n'impose rien sur ce point. En particulier, rien n'est dit sur la façon de trouver les sources incluses entre " ", hormis le fait de chercher selon les règles de < > si cette recherche échoue.
Toujours se réfèrer à la doc de son compilateur pour s'assurer de la manière dont les sources sont incluses.
http://msdn2.microsoft.com/en-us/lib...d4(VS.80).aspx pour Visual C++
Le man de gcc pour gcc
...
En particulier, avec gcc, la variable d'environnement n'est pas INCLUDE mais CPATH ou C_INCLUDE_PATH.
gcc possède une option -I- qui empêche l'utilisation du répertoire courant comme premier répertoire de recherche.
A preprocessing directive of the form
# include <h-char-sequence> new-line
searches a sequence of implementation-defined places for a header identified uniquely by the specified sequence between the < and > delimiters, and causes the replacement of that directive by the entire contents of the header. How the places are specified or the header identified is implementation-defined.
A preprocessing directive of the form
# include "q-char-sequence" new-line
causes the replacement of that directive by the entire contents of the source file identified by the specified sequence between the " delimiters. The named source file is searched for in an implementation-defined manner. If this search is not supported, or if the search fails, the directive is reprocessed as if it read
# include <h-char-sequence> new-line
with the identical contained sequence (including > characters, if any) from the original directive.
aoyou,
Ta citation de la man de gcc, dans les faits (puisqu'il est vrai que la norme n'impose rien a ce sujet), correspond EXACTEMENT aux deux règles que j'ai cité (qui sont en l'occurence celles du précompilateur C fournit par Microsoft)...
J'ai spécifié les termes "INCLUDE" pour rester vaque (/I pour microsoft, -I pour gcc par exemple pour la ligne de commande, ...) autant pour l'option de la ligne de commande que pour la variable d'environnement... qui peut encore avoir un autre nom sur d'autres systèmes, ...
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Je n'ai pas dit le contraire. Heureusement qu'ils font encore à peu près de la même façon, ça facilite les choses. Mais j'ai déjà eu des soucis sur ce point avec un compilo propriétaire (je ne sais plus hp ?). Au vu du flou de la norme, j'ai rencontré une fois des règles de codage qui interdisaient tout simplement l'utilisation des " ". L'autobook (pour les projets gérés avec automake) préconise l'utilisation unique des <>.
Au passage, sous Visual C++, la variable d'environnement s'appelle justement INCLUDE.
Mais bon, au final, la meilleure définition de l'utilisation des " " et des < > est celle de Gruik.
Bonjour,
Une petite lecture intéressante : Recherche des fichiers inclus![]()
- Les fichiers de l'implémentation (standards et extension) sont notés <>
- Les fichiers de l'application sont notés ""
- Les fichiers des bibliothèques 'tiers' sont notés <> (le plus souvent) ou ""...
Donc
est correct
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <stdio.h>
est incorrect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "stdio.h"
L'ordre de recherche est géré par le compilateur selon des règles qui lui sont propres. Généralement <> et prioritaire sur "". Ne pas tirer de conclusions hâtives...
Partager