Полные пути, напечатанные для __FILE__ в VS2008 - PullRequest
5 голосов
/ 25 февраля 2011

Наш код использует __FILE__ для печати местоположений кода в файле журнала.
Мы стремимся, чтобы все экземпляры __FILE__ печатали ТОЛЬКО имя файла, без пути.

Однако мы только что заметили, что хотя source (.cpp files) правильно печатает только имя файла, заголовки (.h files) печатают полный путь. Это раскрывает путь нашего сервера сборки при установке клиента, что в лучшем случае сбивает с толку.

Я исследовал параметр компиляции /FC (полные пути) и его связь с параметрами компиляции /ZI и /Zi (генерация отладочной информации) . Короткая версия - /ZI подразумевает /FC. В настоящее время мы используем /Zi, но мы не используем /ZI или /FC, поэтому у нас все должно быть в порядке.

Мы используем прекомпилированный заголовок (PCH) для всего проекта, но ни один из заголовков, включенных в PCH, не использует __FILE__, так что это не имеет значения.

Что здесь происходит?
Возможно, я запускаю скрытую опцию компиляции?
Кто-нибудь знает обходной путь, который не включает в себя вызовы функций манипуляции со строками во время выполнения?

1 Ответ

1 голос
/ 25 февраля 2011

Это утверждается как «по замыслу» в этой статье отзыва .Рассмотрим этап последующей обработки, при котором пути будут взломаны так, как вы хотите.

...