У рідкісних випадках може бути корисним змінити лінію, яку задає __LINE__
щось інше. Я бачив, як конфігурація GNU робить для деяких тестів повідомлення про відповідні номери рядків після того, як він вставив деякий вуду між рядками, які не відображаються в оригінальних вихідних файлах. Наприклад:
#line 100
Наступні рядки почнуться з __LINE__
100. Ви можете додатково додати нове ім’я файлу
#line 100 "file.c"
Це корисно лише рідко. Але якщо це потрібно, я не знаю альтернатив. Насправді замість рядка також може бути використаний макрос, який повинен спричинити будь-яку з перелічених вище форм. Використовуючи бібліотеку препроцесора підвищення, ви можете збільшити поточний рядок на 50:
#line BOOST_PP_ADD(__LINE__, 50)
Я вважав, що це корисно згадати, оскільки ви запитали про використання __LINE__
та __FILE__
. Ніколи не отримує достатньо сюрпризів із С ++ :)
Редагувати: @Jonathan Leffler надає ще кілька корисних випадків використання у коментарях:
Метедж з #line дуже корисний для попередніх процесорів, які хочуть, щоб повідомлення про помилки в коді C користувача відповідали вихідному файлу користувача. Yacc, Lex та (більше для мене вдома) препроцесори ESQL / C роблять це.