В редких случаях может быть полезно изменить строку, заданную __LINE__
чем-то другим. Я видел, что GNU configure делает это для некоторых тестов, чтобы сообщать соответствующие номера строк после того, как он вставил вуду между строками, которые не отображаются в исходных исходных файлах. Например:
#line 100
Следующие строки будут начинаться с __LINE__
100. При желании вы можете добавить новое имя файла
#line 100 "file.c"
Это редко полезно. Но если это необходимо, я не знаю альтернатив. На самом деле, вместо строки можно использовать макрос, который должен приводить к любой из двух вышеуказанных форм. Используя библиотеку препроцессора boost, вы можете увеличить текущую строку на 50:
#line BOOST_PP_ADD(__LINE__, 50)
Я думал, что это полезно упомянуть, так как вы спросили об использовании __LINE__
и __FILE__
. Никто никогда не получает достаточно сюрпризов из C ++ :)
Редактировать: @Джонатан Леффлер приводит еще несколько хороших примеров использования в комментариях:
Работа с #line очень полезна для препроцессоров, которые хотят, чтобы ошибки сообщались в коде C пользователя в соответствии с его исходным файлом. Yacc, Lex и (больше дома для меня) препроцессоры ESQL / C делают это.