gpt4 book ai didi

gcc - 如何#define __forceinline 内联?

转载 作者:行者123 更新时间:2023-12-04 17:11:57 26 4
gpt4 key购买 nike

我有一些 Microsoft 代码 (XLCALL.CPP),我正在尝试使用 CodeBlocks/MinGW 对其进行编译。
在这一行,我收到一个编译时错误:

__forceinline void FetchExcel12EntryPt(void)

这是我收到的错误消息:

XLCALL.CPP|36|error: expected constructor, destructor, or type conversion before 'void'



此错误是意料之中的,因为 __forceinline 是 Microsoft 对该语言的特定补充,GCC 无法识别。

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

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

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

XLCALL.CPP|36|error: expected unqualified-id before numeric constant



有没有办法在不使用 Visual C++ 的情况下编译这样一段代码?

最佳答案

语法是 __forceinline=inline ,正如您在评论中所指出的,因为这些设置变成了 -D options to GCC .

请注意 inline强烈暗示 GCC 该函数应该被内联,但不保证它。 GCC 等效于 __forceinline always_inline attribute - 例如这段代码:

#define __forceinline __attribute__((always_inline))

或等效地此设置:
__forceinline="__attribute__((always_inline))"

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

关于gcc - 如何#define __forceinline 内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com