2012-01-17 26 views
5

我有一些微软的源代码(XLCALL.CPP),而我试图用代码块/ MinGW的编译。
在此行中我得到一个编译时错误:如何#define __forceinline内嵌?

__forceinline void FetchExcel12EntryPt(void) 

这是错误消息我得到:

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

预计此错误,因为__forceinline是微软特定除了语言,不被GCC认可。

所以,把事情编译,我尝试添加thiese在代码块定义(项目编译选项/编译器设置/#定义):

#define __forceinline inline 
#define __forceinline 

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

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

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

有没有办法来编译这样的一段代码,没有使用 Visual C++?

+0

看来,这是语法:! '__forceinline = inline' – 2012-01-17 16:07:46

回答

9

的语法__forceinline=inline,如您在评论中指出,因为这些设置都被转换为-D options to GCC

注意inline是强烈暗示GCC的该函数应该内联,但不保证它。该GCC等效的__forceinlinealways_inline attribute - 例如验证码:

#define __forceinline __attribute__((always_inline)) 

或等价此设置:

__forceinline="__attribute__((always_inline))" 

(但是,这很可能是不必要的:如果有一些特别好的理由迫使此功能与MSVC编译时被内联,采用了完全不同的编译器时,这个原因很可能是无效的)