從創建雙參數函數開始。 (你知道它應該是兩個參數,因爲宏有兩個參數和宏的屍體不涉及任何其他標識符之外的參數。
function Is_In_Search(mb: X; offset: Y): Z;
function Remove_From_Search(mb: X; offset: Y): W;
另外,如果你想內嵌代碼,這意味着,讓編譯器將在每個調用點以上2個功能聲明生成的代碼,你可以內嵌指令添加到聲明,就像這樣:
function Is_In_Search(mb: X; offset: Y): Z; *inline;*
function Remove_From_Search(mb: X; offset: Y): W; *inline;*
接下來,找出那些類型應爲了做到這一點,看看參數和宏是如何使用的。
最後,填寫函數的主體。將C語法轉換爲Delphi,你得到這個:
function Is_In_Search(mb: X; offset: Integer): Boolean;
begin
Result := 0 <> (mb.searchmask[offset div 8] and (1 shl (offset mod 8)));
end;
procedure Remove_From_Search(mb: X; offset: Integer);
begin
mb.searchmask[offset div 8] := mb.searchmask[offset div 8] and not (1 shl (offset mod 8));
end;
題外話:爲什麼有人將代碼從C轉換到Pascal,而不是相反呢? – 2012-04-03 02:56:11
因爲我知道大多數Delphi比C,而且我需要在我的Delphi應用程序中實現這個代碼:/ – paulohr 2012-04-03 02:58:38
如何聲明'mb'? – RRUZ 2012-04-03 03:12:21