En casos raros, puede ser útil cambiar la línea dada por __LINE__
otra cosa. He visto que GNU configure hace eso para algunas pruebas para informar los números de línea apropiados después de insertar un vudú entre líneas que no aparecen en los archivos fuente originales. Por ejemplo:
#line 100
Hará que las siguientes líneas comiencen con __LINE__
100. Opcionalmente, puede agregar un nuevo nombre de archivo
#line 100 "file.c"
Raramente es útil. Pero si es necesario, no hay alternativas que conozca. En realidad, en lugar de la línea, también se puede usar una macro que debe dar como resultado cualquiera de las dos formas anteriores. Usando la biblioteca de preprocesador boost, puede incrementar la línea actual en 50:
#line BOOST_PP_ADD(__LINE__, 50)
Pensé que es útil mencionarlo ya que preguntaste sobre el uso de __LINE__
y__FILE__
. Nunca se obtienen suficientes sorpresas de C ++ :)
Editar: @Jonathan Leffler proporciona algunos casos de uso más buenos en los comentarios:
Jugar con #line es muy útil para los preprocesadores que desean mantener los errores informados en el código C del usuario en línea con el archivo fuente del usuario. Yacc, Lex y (más en casa para mí) los preprocesadores ESQL / C hacen eso.