__FILE__ Возвращает строку с "\ /" в пути - PullRequest
0 голосов
/ 09 марта 2012

Я использую макрос __FILE__ для сообщений об ошибках. Однако иногда путь возвращается как E:\x\y\/z.ext. Это делается для определенных файлов.

Например, E:\programming\v2\wwwindowclass.h возвращается как E:\programming\v2\/wwwindowclass.h, а E:\programming\v2\test.cpp возвращается как E:\programming\v2\test.cpp. Фактически, единственный файл в каталоге, который работает, кажется test.cpp.

Чтобы обойти это, я использовал ответ jmucchiello на этот вопрос , чтобы заменить любое вхождение "/" на "\". Это работало нормально, и отображаемый путь изменился на нормальный.

Проблема была, когда я попробовал это на Windows 7 (после использования XP). Строка появилась как (null) после вызова функции.

Наряду с этим я иногда получаю некоторые, казалось бы, случайные error 2: File not found ошибки. Я не уверен, связано ли это вообще, но если есть объяснение, было бы приятно услышать.

Я пытался выяснить, почему __FILE__ будет возвращать неправильную строку, но безрезультатно. Я использую GNU g ++ 4.6.1. На самом деле я еще не уверен, были ли неправильные пути в XP неправильными и в Windows 7. Любое понимание приветствуется.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Функция в связанном вопросе, по-видимому, возвращает NULL, если не было внесено никаких изменений.Вероятно, Windows 7 не страдает от проблемы \/ (в некоторых случаях).

0 голосов
/ 05 апреля 2012

Согласно комментарию MSalters:

Typically, the compiler does so when you pass #include "v2/wwwindowclass.h" to the compiler. 
Since every file has its own include statements, you can (but shouldn't) mix the two styles.

Это было так.Мой компилятор автоматически добавляет косую черту.

...