Erlang - Pré-processadores

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}]).