Antes de compilar un módulo de Erlang, el preprocesador de Erlang lo procesa automáticamente. El preprocesador expande las macros que puedan estar en el archivo de origen e inserta los archivos de inclusión necesarios.
Normalmente, no necesitará mirar la salida del preprocesador, pero en circunstancias excepcionales (por ejemplo, al depurar una macro defectuosa), es posible que desee guardar la salida del preprocesador. Para ver el resultado de preprocesar el módulosome_module.erl dar el comando de shell del sistema operativo.
erlc -P some_module.erl
Por ejemplo, supongamos que tuviéramos el siguiente archivo de código:
Ejemplo
-module(helloworld).
-export([start/0]).
-include("user.hrl").
start() ->
io:fwrite("~w",[?macro1(1,2)]).
Y si ejecutamos el siguiente comando desde la línea de comandos:
erlc –P helloworld.erl
Un archivo llamado helloworld.Pse generaría. Si abre este archivo, encontrará el siguiente contenido que es lo que compilaría el preprocesador.
-file("helloworld.erl", 1). -module(helloworld).
-export([start/0]).
-file("user.hrl", 1).
-file("helloworld.erl", 3).
start() ->
io:fwrite("~w", [{1 + 2}]).