在編譯 Erlang 模塊之前,Erlang 預(yù)處理器會(huì)自動(dòng)處理該模塊。預(yù)處理器擴(kuò)展源文件中可能存在的任何宏,并插入任何必要的包含文件。
通常,您不需要查看預(yù)處理器的輸出,但在特殊情況下(例如,調(diào)試一個(gè)錯(cuò)誤的宏時(shí)),您可能希望保存預(yù)處理器的輸出。查看對(duì)模塊some_module進(jìn)行預(yù)處理的結(jié)果。erl給出操作系統(tǒng)的shell命令。
erlc -P some_module.erl
例如,假設(shè)我們有以下代碼文件-
-module(helloworld). -export([start/0]). -include("user.hrl"). start() -> io:fwrite("~w",[?macro1(1,2)]).
如果我們從命令行執(zhí)行以下命令-
erlc –P helloworld.erl
將生成一個(gè)名為 helloworld.P 的文件。如果您打開(kāi)這個(gè)文件,您會(huì)發(fā)現(xiàn)以下內(nèi)容,這是預(yù)處理程序?qū)⒁幾g的內(nèi)容。
-file("helloworld.erl", 1). -module(helloworld). -export([start/0]). -file("user.hrl", 1). -file("helloworld.erl", 3). start() -> io:fwrite("~w", [{1 + 2}]).