正常的Erlang属性可以通过解析转换来修改。这不适用于“-define”属性,因为它们是由预处理器处理的。如果你想改变所有宏的值而不改变文件本身,你会怎么做?如何更改“-define”Erlang属性(宏定义)的值?
理想我想打电话给这会带来以下影响编译器的一些修改的版本:
当输入运行...
...
-define(constant, 45).
-define(debug(X), io:format(X)).
...
?debug(?constant) % Line: 7
...
..和参数...
something:external
结果将是一些抽象的形式代替其...
{call,7,
{remote,7,{atom,7,io},{atom,7,format}},
[{integer,7,45}]}
...将有:
{call,7,
{remote,7,{atom,7,something},{atom,7,external}},
[{call,7,
{remote,7,{atom,7,something},{atom,7,external}},
[]}]}
当然生成的代码可能不会是可执行的,但可以启用宏的使用一些“质量”分析。