Em casos raros, pode ser útil alterar a linha fornecida por __LINE__
outra coisa. Eu já vi o GNU configurar fazer isso para que alguns testes relatem números de linhas apropriados após a inserção de um vodu entre linhas que não aparecem nos arquivos originais. Por exemplo:
#line 100
Inicia as linhas a seguir com __LINE__
100. Como opção, você pode adicionar um novo nome de arquivo
#line 100 "file.c"
Isso raramente é útil. Mas se for necessário, não há alternativas que conheço. Na verdade, em vez da linha, uma macro também pode ser usada, o que deve resultar em qualquer uma das duas formas acima. Usando a biblioteca de pré-processador boost, você pode incrementar a linha atual em 50:
#line BOOST_PP_ADD(__LINE__, 50)
Eu pensei que era útil mencioná-lo, uma vez que você perguntou sobre o uso de __LINE__
e __FILE__
. Nunca se obtém surpresas suficientes em C ++ :)
Edit: @ Jonathan Leffler fornece mais alguns casos de uso bons nos comentários:
Brincar com #line é muito útil para pré-processadores que desejam manter os erros relatados no código C do usuário alinhados com o arquivo de origem do usuário. Yacc, Lex e (mais em casa para mim) os pré-processadores ESQL / C fazem isso.