Я использую (использую) макросы __FILE__
и __LINE__
для печати диагностических сообщений из моего кода. Это работает довольно хорошо, когда вы используете GCC с make, файл настолько короткий, насколько вы указали его в командной строке. Недавно я переключился на использование CodeLite, который использует полные имена файлов (по крайней мере, в Windows) при сборке. Внезапно мой диагностический вывод почти не читается.
Есть ли способ получить в препроцессоре только файловую составляющую имени файла? Я могу жить с непереносимым решением GCC. (Я вернусь к простым __FILE__
другим случаям.)
Конечно, я могу передать содержимое __FILE__
через функцию и извлечь только файловый компонент, но операции со строками — это не то, что я имел в виду для диагностических сообщений, которые не должны изменять поведение во время выполнения...
ПРИМЕЧАНИЕ. Я использую имя файла так, как его использует GNU. Путь — это набор имен файлов, а имя файла — относительный или абсолютный идентификатор файла. Имя файла может состоять из компонента каталога и компонента файла.