__FILE__在Path中返回带有“\ /”的String

时间:2012-03-09 14:49:41

标签: c++ gcc path windows-xp

我使用__FILE__宏来显示错误消息。但是,有时路径会以E:\x\y\/z.ext的形式返回。它针对特定文件执行此操作。

例如,E:\programming\v2\wwwindowclass.h返回E:\programming\v2\/wwwindowclass.hE:\programming\v2\test.cpp返回E:\programming\v2\test.cpp。实际上,目录中唯一有效的文件似乎是test.cpp

为了解决这个问题,我使用了jmucchiello对this question的回答来用“\”替换任何出现的“/”。这工作正常,显示的路径更改为正常路径。

问题出在我在Windows 7上尝试(使用XP之后)。调用该函数后,该字符串显示为(null)

除此之外,我有时会看到一些看似随机的error 2: File not found错误。我不确定这是否相关,但是如果有解释的话,听听会很好。

我试图找出为什么__FILE__会返回错误的字符串,但无济于事。我正在使用GNU g ++ 4.6.1。我真的不确定XP中错误的路径在Windows 7中是否也是错误的。任何见解都表示赞赏。

2 个答案:

答案 0 :(得分:1)

如果没有要进行的更改,链接问题中的函数似乎返回NULL。可能Windows 7没有遇到\/问题(在某些情况下)。

答案 1 :(得分:0)

根据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.

情况就是这样。我的编译器会自动添加正斜杠。