2012-03-09 25 views
0

我使用__FILE__宏查看错误消息。但是,有时路径会回到E:\x\y\/z.ext。它为特定文件执行此操作。__FILE__返回一个带有“ /”的字符串,路径为

例如,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中也是错误的。任何见解都会被赞赏。

+1

它没有返回错误的字符串,它只是这是处理这个问题的许多实现定义的方法之一。通常,东西需要\\正确地转义\,请阅读您的操作系统的文档,了解它需要的路径名称的方式 – PlasmaHH 2012-03-09 14:54:10

+0

但返回的真正路径是'E:\\ programming \\ v2 \\/wwwindowclass.h '。我没有看到使用额外的'/'。为什么它会为大多数文件做这件事,但不是'test.cpp'? – chris 2012-03-09 15:03:38

+0

@chris:通常情况下,编译器会在您将* #include“v2/wwwindowclass.h”传递给编译器时执行此操作。由于每个文件都有自己的包含语句,因此可以(但不应该)混合这两种样式。 – MSalters 2012-03-09 15:27:04

回答

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. 

这是事实。我的编译器自动添加一个正斜杠。

1

如果没有更改,链接问题中的函数看起来会返回NULL。可能Windows 7不会受到\/问题的困扰(在某些情况下)。

+0

哦,那是我的坏话。我没有注意到这一点。 – chris 2012-03-09 15:01:34

相关问题