2015-04-07 58 views
-1

__FILE__在我以32位运行程序时返回了完整的文件路径。 但在64位它只给出文件名。如何解决这个问题?__FILE__未在64位配置中提供完整的文件路径

+5

哪个编译器?你能给我们一个简单的例子来证明这一点吗?你可以编译并运行'int main(){printf(“%s \ n”,__ FILE__); }'并通过你的C++编译器运行它? –

回答

3

这可能更多取决于驱动编译器的方式,而不是32/64位差异。

我的期望(以及我在这里用gcc验证的)是__FILE__给出了提供给编译器的名称。例如

$ cat foo.c 
int main() { printf("%s\n",__FILE__); } 
$ gcc foo.c & ./a.out 
foo.c 
$ gcc ./foo.c & ./a.out 
./foo.c 
$ gcc `pwd`/foo.c & ./a.out 
/the/full/path/as/reported/by/pwd/foo.c 

同样包含文件,报告的路径是你指定的目录,包括编译器使用访问头,因此可以依靠的方式之一。