Este documento en su sección 2.6 Computed incluye tiene el siguiente párrafo:
Si la línea se expande a un flujo de tokens que comienza con un token <y que incluye un token>, los tokens entre <y el primero> se combinan para formar el nombre de archivo que se incluirá. Cualquier espacio en blanco entre los tokens se reduce a un solo espacio; entonces se conserva cualquier espacio después del <inicial, pero se ignora un espacio posterior al cierre> . CPP busca el archivo de acuerdo con las reglas para el ángulo incluido.
Sé que esta es una implementación definida, pero ¿por qué tiene que ser así para GCC? Me refiero específicamente a la oración resaltada arriba.
EDITAR
Acabo de notar que el tercer párrafo antes del citado arriba dice lo siguiente:
Debe tener cuidado al definir la macro.
#define
guarda tokens, no texto. El preprocesador no tiene forma de saber que la macro se usará como argumento de#include
, por lo que genera tokens ordinarios, no un nombre de encabezado. Es poco probable que esto cause problemas si usa comillas dobles, que están lo suficientemente cerca de las constantes de cadena. Sin embargo, si usa corchetes angulares, puede tener problemas .
¿Alguien sabe qué tipo de problema se señala aquí?