德爾福7有宏預處理器嗎?德爾福7宏預處理器支持
有沒有內置的,所以也許有可能使用第三方或其他語言預處理器(如c預處理器)。
如果有一個,如何設置它爲Delphi 7?
我試圖做函數內聯(速度)。宏預處理器似乎是德爾福唯一簡單的選擇。
感謝, 埃貢
德爾福7有宏預處理器嗎?德爾福7宏預處理器支持
有沒有內置的,所以也許有可能使用第三方或其他語言預處理器(如c預處理器)。
如果有一個,如何設置它爲Delphi 7?
我試圖做函數內聯(速度)。宏預處理器似乎是德爾福唯一簡單的選擇。
感謝, 埃貢
在編譯代碼之前,您始終可以在代碼上運行外部宏處理器,例如m4甚至(shudder)cpp。然而,我不會推薦這個 - 根據我的經驗,內聯的好處(這是你似乎想要做的)的好處很小,並且可以通過導致代碼大小增加的減速來抵消。
我沒有聽說在Delphi 7任何第三方宏,但版本的2007+具有自動內聯,如果這是一個選項。
D2005已經支持內聯 – 2009-12-13 10:40:36
您可以使用屬於JEDI Code Library的[JEDI Pascal預處理器](JEDI Pascal預處理器)。
您可以從SourceForge project page中獲取當前的JCL版本,並且您可以瀏覽JPP課程代碼here。
以下是我用m4
:
// uses lookup for counting bits
function PopCount(const Number: Cardinal): Byte;
begin
Result := WordBitCount[Number and $FFFF] + WordBitCount[Number shr 16];
end;
{ M4 macro
define(PopCount, (WordBitCount[[email protected] and $FFFF] + WordBitCount[[email protected] shr 16]))
}
它仍然很容易編譯,但可以用m4
被加快。
我喜歡你的解決方案可以在沒有運行預處理器的情況下編譯:) – Sebastian 2014-01-30 14:47:30
這是值得的,但只適用於使用較低級別類型的短葉方法。 (IOW不自動)。這對基於指針的迭代器等非常有用。一旦任何程序被調用,加速消失 – 2009-12-13 10:44:06
我終於用m4。它似乎有最獨立的語法。小功能的速度可以達到10倍。例如一個簡單的函數,如PointInRect。 – Egon 2009-12-14 21:39:39