Cela dépend du compilateur. Cela dit, en général, l'utilisation de "
donne la priorité aux en-têtes du répertoire de travail actuel sur les en-têtes du système. <>
est généralement utilisé pour les en-têtes du système. D'après la spécification (section 6.10.2) :
Une directive de prétraitement de la forme
# include <h-char-sequence> new-line
recherche dans une séquence d'emplacements définis par l'implémentation un en-tête identifié de manière unique par la séquence spécifiée entre l'en-tête et l'en-tête. <
y >
et entraîne le remplacement de cette directive par l'ensemble du contenu de l'en-tête. La manière dont les emplacements sont spécifiés ou l'en-tête identifié est définie par l'implémentation.
Une directive de prétraitement de la forme
# include "q-char-sequence" new-line
entraîne le remplacement de cette directive par tout le contenu du fichier source identifié par la séquence spécifiée entre les caractères "
délimiteurs. Le fichier source nommé est recherché d'une manière définie par l'implémentation. Si cette recherche n'est pas prise en charge ou si elle échoue, la directive est retraitée comme si elle lisait
# include <h-char-sequence> new-line
avec la même séquence contenue (y compris >
c d'origine.
Ainsi de suite le plus à l'aide des compilateurs ""
vérifie d'abord votre répertoire local, et s'il ne trouve pas de correspondance, il passe à la vérification des chemins d'accès du système. L'utilisation de <>
lance la recherche avec les en-têtes du système.