如何#define __forceinline内联?

Pie*_*o M 5 gcc mingw inline redefinition

我有一些Microsoft代码(XLCALL.CPP),我试图用CodeBlocks/MinGW编译.
在这一行,我得到一个编译时错误:

__forceinline void FetchExcel12EntryPt(void)
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息:

XLCALL.CPP | 36 |错误:'void'之前的预期构造函数,析构函数或类型转换

此错误是预期的,因为__forceinline是Microsoft特定的语言添加,但未被GCC识别.

因此,为了编译,我尝试在CodeBlocks中添加thiese定义(项目构建选项/编译器设置/ #define):

#define __forceinline inline
#define __forceinline 
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到同样的错误.

如果在对话框中我没有指定#define预处理器命令(即:)__forceinline inline,这就是我得到的:

XLCALL.CPP | 36 |错误:数字常量之前的预期unqualified-id

有没有办法编译这样的代码,而不使用 Visual C++?

Mat*_*ery 11

__forceinline=inline正如您在评论中所指出的那样,语法是因为这些设置变成了-DGCC的选项.

请注意,inlineGCC强烈暗示该函数应该内联,但不保证.GCC等价物__forceinlinealways_inline属性 - 例如这段代码:

#define __forceinline __attribute__((always_inline))
Run Code Online (Sandbox Code Playgroud)

或者相当于这个设置:

__forceinline="__attribute__((always_inline))"
Run Code Online (Sandbox Code Playgroud)

(但这可能是不必要的:如果在使用MSVC编译时强制使用此函数有一些特别好的理由,那么在使用完全不同的编译器时,这个原因可能无效!)