检查宏的值

时间:2011-12-15 11:32:02

标签: macros erlang

假设有一个文件被编译并处于运行模式,它正在使用一些宏。有没有办法检查文件正在使用的宏的值。

例如,如果文件包含

-define(TIMEOUT,200).

从终端如何查看文件正在使用的TIMEOUT定义。

为什么我想要的是因为假设文件处于运行模式并且我之间更改了宏定义而忘记编译文件。我想确认它正在采取什么样的定义。

1 个答案:

答案 0 :(得分:5)

宏甚至在编译的最早阶段都无法生存,因为预处理器会立即在源代码中替换它们。您必须定义并导出一个单独的函数来查看它们的值,例如:

macro_values() ->
  [{'TIMEOUT',?TIMEOUT},...].

然后,您可以从shell调用此方法并获取已替换的值。