2009-12-12 54 views
2

德爾福7有宏預處理器嗎?德爾福7宏預處理器支持

有沒有內置的,所以也許有可能使用第三方或其他語言預處理器(如c預處理器)。

如果有一個,如何設置它爲Delphi 7?

我試圖做函數內聯(速度)。宏預處理器似乎是德爾福唯一簡單的選擇。

感謝, 埃貢

回答

4

在編譯代碼之前,您始終可以在代碼上運行外部宏處理器,例如m4甚至(shudder)cpp。然而,我不會推薦這個 - 根據我的經驗,內聯的好處(這是你似乎想要做的)的好處很小,並且可以通過導致代碼大小增加的減速來抵消。

+0

這是值得的,但只適用於使用較低級別類型的短葉方法。 (IOW不自動)。這對基於指針的迭代器等非常有用。一旦任何程序被調用,加速消失 – 2009-12-13 10:44:06

+0

我終於用m4。它似乎有最獨立的語法。小功能的速度可以達到10倍。例如一個簡單的函數,如PointInRect。 – Egon 2009-12-14 21:39:39

0

我沒有聽說在Delphi 7任何第三方宏,但版本的2007+具有自動內聯,如果這是一個選項。

+0

D2005已經支持內聯 – 2009-12-13 10:40:36

2

以下是我用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被加快。

+0

我喜歡你的解決方案可以在沒有運行預處理器的情況下編譯:) – Sebastian 2014-01-30 14:47:30