5

如果我有一个其他文件需要的文件,是否可以获得需要它的文件的绝对文件路径?

因此,如果lib_file.cr有一个要由app_file.cr导入它的宏调用,该宏能否app_file.cr在编译时发现文件路径?

我试过这样的东西:

macro tester
  puts __DIR__
  puts __FILE__
end

但是当从执行要求的文件中调用时,它在编译时没有给出任何内容,而在运行时则:

?
扩展宏:app_file

如果我将宏更改为:

macro tester
  {{puts __DIR__}}
  {{puts __FILE__}}
end

它在编译时给了我这个:

“/home/user/Documents/crystal_test/lib_file”
“/home/user/Documents/crystal_test/lib_file.cr”

那么有没有什么技巧可以在编译时获得app_file.cr内部的完整路径?lib_file.cr

4

1 回答 1

7

您可以使用默认参数__FILE__来获取调用宏的文件。

macro tester(file = __FILE__)
  {{puts file}} # Print at compile time
  puts {{file}} # Print at runtime
end
于 2015-07-06T01:20:26.110 回答