Antes de um módulo Erlang ser compilado, ele é processado automaticamente pelo pré-processador Erlang. O pré-processador expande todas as macros que possam estar no arquivo de origem e insere todos os arquivos de inclusão necessários.
Normalmente, você não precisa olhar para a saída do pré-processador, mas em circunstâncias excepcionais (por exemplo, ao depurar uma macro com defeito), você pode querer salvar a saída do pré-processador. Para ver o resultado do pré-processamento do módulosome_module.erl dê o comando shell do sistema operacional.
erlc -P some_module.erl
Por exemplo, suponha que se tivéssemos o seguinte arquivo de código -
Exemplo
-module(helloworld).
-export([start/0]).
-include("user.hrl").
start() ->
io:fwrite("~w",[?macro1(1,2)]).
E se executarmos o seguinte comando na linha de comando -
erlc –P helloworld.erl
Um arquivo chamado helloworld.Pseria gerado. Se você abrir este arquivo, encontrará o seguinte conteúdo, que é o que o pré-processador compilará.
-file("helloworld.erl", 1). -module(helloworld).
-export([start/0]).
-file("user.hrl", 1).
-file("helloworld.erl", 3).
start() ->
io:fwrite("~w", [{1 + 2}]).