Ce document dans sa section 2.6 Calculé comprend le paragraphe suivant:
Si la ligne se développe en un jeton commençant par un jeton <et incluant un jeton>, les jetons entre le <et le premier> sont combinés pour former le nom de fichier à inclure. Tout espace entre les jetons est réduit à un seul espace; alors tout espace après le <initial est conservé, mais un espace de fin avant la fermeture> est ignoré . CPP recherche le fichier selon les règles d'inclinaison.
Je sais que cette implémentation est définie, mais pourquoi doit-il en être ainsi pour GCC? Je me réfère spécifiquement à la phrase surlignée ci-dessus.
ÉDITER
Je viens de remarquer que le troisième paragraphe avant celui cité ci-dessus dit ceci:
Vous devez être prudent lorsque vous définissez la macro.
#define
enregistre les jetons, pas le texte. Le préprocesseur n'a aucun moyen de savoir que la macro sera utilisée comme argument de#include
, donc il génère des jetons ordinaires, pas un nom d'en-tête. Il est peu probable que cela cause des problèmes si vous utilisez des inclusions entre guillemets, qui sont suffisamment proches des constantes de chaîne. Cependant, si vous utilisez des équerres, vous risquez d'avoir des problèmes .
Quelqu'un sait-il quel genre de problème est signalé ici?