目錄

名稱

xsubpp - 將 Perl XS 程式碼轉換為 C 程式碼的編譯器

語法

xsubpp [-v] [-except] [-s pattern] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-typemap typemap] [-output filename]... file.xs

說明

此編譯器通常由 ExtUtils::MakeMakerModule::Build 或其他 Perl 模組建置工具所建立的 makefile 執行。

xsubpp 會透過嵌入必要的建構來編譯 XS 程式碼為 C 程式碼,以讓 C 函式處理 Perl 值,並建立必要的連結,讓 Perl 存取這些函式。編譯器使用型別對應表來決定如何將 C 函式參數和變數對應到 Perl 值。

編譯器將搜尋名為 typemap 的型別對應表檔案。它將使用下列搜尋路徑來尋找預設型別對應表,最右邊的型別對應表優先。

../../../typemap:../../typemap:../typemap:typemap

它也會使用安裝為 ExtUtils::typemap 的預設型別對應表。

選項

請注意,XSOPT MakeMaker 選項可用於將這些選項新增到 MakeMaker 所產生的任何 makefiles 中。

-hiertype

在類型名稱中保留 '::',以便可以對應 C++ 層級類型。

-except

將例外處理程式碼加入 C 程式碼中。

-typemap typemap

表示使用者提供的 typemap 應優先於預設 typemap。此選項可以使用多次,最後一個 typemap 具有最高優先權。

-output filename

指定要產生的輸出檔案名稱。如果未指定檔案,輸出將寫入標準輸出。

-v

xsubpp 版本號列印到標準輸出,然後結束。

-prototypes

預設情況下,xsubpp 不會自動為所有 xsubs 產生原型碼。此旗標將啟用原型。

-noversioncheck

停用執行時期測試,該測試用於判斷物件檔案(源自 .xs 檔案)和 .pm 檔案是否具有相同的版本號。

-nolinenumbers

防止在輸出中包含 '#line' 指令。

-nooptimize

停用某些最佳化。目前唯一受影響的最佳化是輸出 C 程式碼使用 target(請參閱 perlguts)。這可能會大幅降低產生的程式碼速度,但這是 5.005 及更早版本 xsubpp 的運作方式。

-noinout

停用辨識 INOUT_LISTINOUT_LIST 宣告。

-noargtypes

停用辨識函數簽章的 ANSI 類似描述。

-C++

目前完全不執行任何操作。此旗標在許多版本的 perl 中都是無效操作,至少可以追溯到 perl5.003_07。它在此處允許使用以維持向後相容性。

-s=...-strip=...

此選項不常見且不建議使用。

如果指定,則在產生的 XS 函數中,給定的字串將從 C 函數名稱的開頭移除(如果以該前綴開頭)。這只適用於沒有 CODEPPCODE 區塊的 XSUB。例如,XS

void foo_bar(int i);

xsubpp-s foo_ 呼叫時,將在 Perl 中安裝一個 foo_bar 函數,但實際上在 C 中呼叫 bar(i)。大多數時候,這與您要的相反,而且失敗模式有點模糊,因此請盡可能避免此選項。

環境

不使用環境變數。

作者

最初由 Larry Wall 編寫。由 Ken Williams 轉換為 ExtUtils::ParseXS 模組。

修改記錄

請參閱檔案 Changes

另請參閱

perl(1)、perlxs(1)、perlxstut(1)、ExtUtils::ParseXS