2012-09-28 111 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}可能会重置它。 –