Erlang - Preprocessori

Prima che un modulo Erlang venga compilato, viene automaticamente elaborato dal preprocessore Erlang. Il preprocessore espande tutte le macro che potrebbero essere nel file di origine e inserisce i file include necessari.

Normalmente, non sarà necessario guardare l'output del preprocessore, ma in circostanze eccezionali (ad esempio, quando si esegue il debug di una macro difettosa), si potrebbe voler salvare l'output del preprocessore. Per vedere il risultato della pre-elaborazione del modulosome_module.erl dare il comando della shell del sistema operativo.

erlc -P some_module.erl

Ad esempio, supponiamo di avere il seguente file di codice:

Esempio

-module(helloworld). 
-export([start/0]). 
-include("user.hrl"). 

start() -> 
   io:fwrite("~w",[?macro1(1,2)]).

E se eseguiamo il seguente comando dalla riga di comando:

erlc –P helloworld.erl

Un file chiamato helloworld.Pverrebbe generato. Se apri questo file, troverai il seguente contenuto che è ciò che il preprocessore compilerà.

-file("helloworld.erl", 1). -module(helloworld).

-export([start/0]).
-file("user.hrl", 1).
-file("helloworld.erl", 3).

start() ->
   io:fwrite("~w", [{1 + 2}]).