如何为类 /块 /范围选择C 调用约定

How to select C++ calling convention for a class / block / scope?

本文关键字:选择 调用 约定 范围      更新时间:2023-10-16

我想利用 vectorCall conduntion(或 regcall 等,取决于编译器(,但用于考虑第三方库的意义不可能使整个项目的默认情况下这一约定。在巨大项目的所有功能/方法中添加关键字似乎也不是一个很好的主意。

有没有办法为类选择默认的调用约定?或一个块,类似于#pragma Pack(Push/pop(。

根据此2013 MSDN博客,有关vectorCall的博客可以通过/GV编译器开关在Visual Studio中激活。

因此,也许可能的答案可能是将您要使用vectorcall使用的代码/类放置在使用标准调用约定的代码中的单独库中。

然后可以使用适当的编译器开关来构建这些库。

我会使用类似于成语的东西:inline Guard Macro

在这种情况下:

#define CALL_CONVENTION vectorcall

这可以根据其他定义定义。

然后,您的所有功能看起来都可以:

void CALL_CONVENTION func()
{ ... }