Прежде чем модуль Erlang будет скомпилирован, он автоматически обрабатывается препроцессором Erlang. Препроцессор расширяет любые макросы, которые могут быть в исходном файле, и вставляет любые необходимые файлы include.
Обычно вам не нужно смотреть на выход препроцессора, но в исключительных обстоятельствах (например, при отладке неисправного макроса) вы можете сохранить вывод препроцессора. Чтобы увидеть результат предварительной обработки модуля some_module.erl, вы получите команду оболочки ОС.
erlc -P some_module.erl
-module(helloworld).
-export([start/0]).
-include("user.hrl").
start() ->
io:fwrite("~w",[?macro1(1,2)]).
И если мы выполнили следующую команду из командной строки -
erlc –P helloworld.erl
Будет создан файл helloworld.P . Если вы откроете этот файл, вы найдете следующее содержимое, которое будет компилировать препроцессор.
-file("helloworld.erl", 1). -module(helloworld).
-export([start/0]).
-file("user.hrl", 1).
-file("helloworld.erl", 3).
start() ->
io:fwrite("~w", [{1 + 2}]).
0 комментариев