Erlang - ตัวประมวลผลล่วงหน้า

ก่อนคอมไพล์โมดูล Erlang จะถูกประมวลผลโดยอัตโนมัติโดย Erlang Preprocessor ตัวประมวลผลก่อนขยายมาโครใด ๆ ที่อาจอยู่ในไฟล์ต้นฉบับและแทรกไฟล์ที่จำเป็น

โดยปกติคุณไม่จำเป็นต้องดูที่เอาต์พุตของตัวประมวลผลก่อนหน้า แต่ในสถานการณ์พิเศษ (ตัวอย่างเช่นเมื่อทำการดีบักแมโครที่ผิดพลาด) คุณอาจต้องการบันทึกเอาต์พุตของตัวประมวลผลล่วงหน้า เพื่อดูผลลัพธ์ของการประมวลผลโมดูลล่วงหน้าsome_module.erl ให้คำสั่ง OS shell

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}]).