Este documento em sua seção 2.6 Inclui computados possui o seguinte parágrafo:
Se a linha se expandir para um fluxo de token começando com um token <e incluindo um>, os tokens entre o <e o primeiro> serão combinados para formar o nome do arquivo a ser incluído. Qualquer espaço em branco entre os tokens é reduzido para um único espaço; qualquer espaço após o inicial <é retido, mas um espaço à direita antes do fechamento> é ignorado . O CPP procura o arquivo de acordo com as regras para colchetes angulares.
Eu sei que isso é uma implementação definida, mas por que tem que ser assim para o GCC? Estou me referindo especificamente à frase destacada acima.
EDITAR
Acabei de notar que o terceiro parágrafo anterior ao citado acima diz o seguinte:
Você deve ter cuidado ao definir a macro.
#define
salva tokens, não texto. O pré-processador não tem como saber que a macro será usada como argumento de#include
, portanto, gera tokens comuns, não um nome de cabeçalho. É improvável que cause problemas se você incluir aspas duplas, que são próximas o suficiente para constantes de seqüência de caracteres. Se você usar colchetes angulares, no entanto, poderá ter problemas .
Alguém sabe que tipo de problema está sendo apontado aqui?