正常的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}},
[]}]}
當然生成的代碼可能不會是可執行的,但可以啓用宏的使用一些「質量」分析。