Erlang - Préprocesseurs

Avant qu'un module Erlang ne soit compilé, il est automatiquement traité par le préprocesseur Erlang. Le préprocesseur développe toutes les macros qui peuvent se trouver dans le fichier source et insère tous les fichiers d'inclusion nécessaires.

Normalement, vous n'aurez pas besoin de regarder la sortie du préprocesseur, mais dans des circonstances exceptionnelles (par exemple, lors du débogage d'une macro défectueuse), vous voudrez peut-être enregistrer la sortie du préprocesseur. Pour voir le résultat du prétraitement du modulesome_module.erl donnez la commande shell du système d'exploitation.

erlc -P some_module.erl

Par exemple, supposons que nous ayons le fichier de code suivant -

Exemple

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

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

Et si nous exécutons la commande suivante à partir de la ligne de commande -

erlc –P helloworld.erl

Un fichier appelé helloworld.Pserait généré. Si vous ouvrez ce fichier, vous trouverez le contenu suivant, ce que le préprocesseur compilerait.

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

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

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