2017-04-09 50 views
-1

我想在帕斯卡(freepascal)中定義的東西。 在C++中,你可以通過變量定義的宏是這樣的:傳遞參數在帕斯卡定義

#define REP(i,k) for(int i=0; i<k; i++) 

你怎麼能在帕斯卡做呢?

我在第一行添加了{$MACRO ON}命令,因此它可以運行正常定義而沒有像{$define lala:='hello world'}這樣的錯誤。

但是,當我嘗試{define lala(i):=i}程序出現錯誤。

如何在Pascal中傳遞可變參數?

+2

你不想這樣做。在C++中這是一個糟糕的主意。不要複製不好的想法。 –

+0

根據「程序員指南」第1.2.48節的內容:「在{$ MACRO ON}狀態下,編譯器允許使用C型(儘管沒有詳細說明)宏。」 宏「。請注意「不太精細」部分。我不認爲參數是支持的。 – tonypdmtr

回答

3

使用外部預處理器,並在結果中使用Pascal編譯器之前在構建系統中執行它。

FPC宏系統不適用於元編程,而是用於在頭文件和緊湊型啓用/禁用邏輯中調用約定宏(如home-brewn聲明和其他調試日誌代碼),並且不支持參數化。

非衛生宏從根本上與Pascal單元系統不兼容,衛生宏由內聯函數/程序覆蓋。

+0

感謝您的回答。我只想用pascal編寫一些模板,就像C++ haha​​ha一樣。那麼我只會使用函數和過程。 –

+0

FPC具有泛型。 –