我記得在Turbo Pascal或早期的Delphi版本中,有一些選項可以使函數調用約定不是默認註冊,而是任何其他類型。用於設置默認調用約定的編譯器選項?
也許我把它誤認爲是{$ W +}或{$ STACKFRAMES ON}選項,它會影響函數序言和結尾。
我不想使用pascal預處理器,但是如果我可以更改某個單元的默認約定,它對我來說可能很有用。
我記得在Turbo Pascal或早期的Delphi版本中,有一些選項可以使函數調用約定不是默認註冊,而是任何其他類型。用於設置默認調用約定的編譯器選項?
也許我把它誤認爲是{$ W +}或{$ STACKFRAMES ON}選項,它會影響函數序言和結尾。
我不想使用pascal預處理器,但是如果我可以更改某個單元的默認約定,它對我來說可能很有用。
這是無法完成的。默認調用約定不能被編譯器選項修改。
Free Pascal中有$調用指令:
http://www.freepascal.org/docs-html/prog/progsu7.html#x13-120001.1.7
它通常用來修復與假設 有關調用內置到他們約定的彙編程序舊單位。
它是本地指令,不是嗎?它會影響在EOF或下一個這樣的指令之前聲明的函數嗎? –
是的,就像大多數非鏈接和非$模式的一樣。 (特別是{$ mode delphi}可能會重置它。 –
可惜:-( 我不喜歡污染既IDE的MSBuild和命令行構建腳本與預處理器的依賴 –
我很好奇,爲什麼你想有一個不同的調用約定? –
移植從D2006真的老了模塊化項目/ DLL到XE2/BPL。開發正在進行中,並且需要支持幾個較早發佈的基於DLL的版本,雖然我可以在BPL中使用stdcall,但我寧願避免這種情況。只是讓我感覺很癢 –