2012-09-28 82 views
0

我記得在Turbo Pascal或早期的Delphi版本中,有一些選項可以使函數調用約定不是默認註冊,而是任何其他類型。用於設置默認調用約定的編譯器選項?

也許我把它誤認爲是{$ W +}或{$ STACKFRAMES ON}選項,它會影響函數序言和結尾。

我不想使用pascal預處理器,但是如果我可以更改某個單元的默認約定,它對我來說可能很有用。

回答

1

這是無法完成的。默認調用約定不能被編譯器選項修改。

+0

可惜:-( 我不喜歡污染既IDE的MSBuild和命令行構建腳本與預處理器的依賴 –

+1

我很好奇,爲什麼你想有一個不同的調用約定? –

+0

移植從D2006真的老了模塊化項目/ DLL到XE2/BPL。開發正在進行中,並且需要支持幾個較早發佈的基於DLL的版本,雖然我可以在BPL中使用stdcall,但我寧願避免這種情況。只是讓我感覺很癢 –

2

Free Pascal中有$調用指令:

http://www.freepascal.org/docs-html/prog/progsu7.html#x13-120001.1.7

它通常用來修復與假設 有關調用內置到他們約定的彙編程序舊單位。

+0

它是本地指令,不是嗎?它會影響在EOF或下一個這樣的指令之前聲明的函數嗎? –

+0

是的,就像大多數非鏈接和非$模式的一樣。 (特別是{$ mode delphi}可能會重置它。 –