旧的32位windows提供32位windows api,大多数都有'WINAPI'的调用约定,这是一个从'__stdcall'定义的宏。
现在64位,调用约定已统一为Microsoft“x64调用约定”:(https://en.wikipedia.org/wiki/X86_calling_conventions)
我的问题是:
64位windows是否也提供了一套windows api 64bit,没有任何'WINAPI'指示符?
如果是这样,如何让旧的应用程序兼容并编译成windows 64位版本?处理旧的调用约定会出现问题。
WINAPI
是一个预处理器宏,通常扩展为 __stdcall
。 __stdcall
调用约定仅对 32 位目标有意义。然而,这并不意味着该 API 仅适用于 32 位目标,如文档中所述:
在 ARM 和 x64 处理器上,编译器接受并忽略
。__stdcall
Win32 API 可在 64 位版本的 Windows 上使用,函数参数和类型在适用的情况下扩展到 64 位。
WINAPI
装饰是一个保留。