我有一些Microsoft代码(XLCALL.CPP),我试图用CodeBlocks / MinGW编译。
在这一行,我得到一个编译时错误:
__forceinline void FetchExcel12EntryPt(void)
这是我收到的错误消息:
XLCALL.CPP | 36 |错误:预期的构造函数,析构函数或类型 'void'之前的转换
预计会出现此错误,因为__forceinline是Microsoft特定的语言补充,但未被GCC识别。
所以,为了编译,我尝试在CodeBlocks中添加thiese定义(项目构建选项/编译器设置/ #define):
#define __forceinline inline
#define __forceinline
但是我仍然得到同样的错误。
如果在对话框中我没有指定#define预处理器命令(即:__forceinline inline
),这就是我得到的:
XLCALL.CPP | 36 |错误:数字常量之前的预期unqualified-id
有没有办法编译这样的代码而不使用 Visual C ++?
答案 0 :(得分:11)
语法为__forceinline=inline
,正如您在评论中所述,因为这些设置已变为-D
options to GCC。
请注意,inline
强烈暗示GCC应该内联函数,但不保证。 GCC等效__forceinline
是always_inline
attribute - 例如这段代码:
#define __forceinline __attribute__((always_inline))
或等效此设置:
__forceinline="__attribute__((always_inline))"
(但这可能是不必要的:如果在使用MSVC编译时强制这个函数被内联时有一些特别好的理由,那么当使用完全不同的编译器时,这个原因可能无效!)