__FILE__
正在返回完整的文件路径。
但在64位中它只给出文件名。如何解决这个问题?
答案 0 :(得分: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
类似于包含文件,报告的路径是编译器用来访问标头的路径,因此可能取决于您指定包含目录的方式。