Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to #define __forceinline inline?

I have some Microsoft code (XLCALL.CPP) which I am trying to compile with CodeBlocks/MinGW.
At this line I get a compile time error:

__forceinline void FetchExcel12EntryPt(void)

This is the error message I get:

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

This error is expected, because __forceinline is a Microsoft specific addition to the language, not recognized by GCC.

So, to get things compile, I try to add thiese defines in CodeBlocks (Project Build Options/Compiler Settings/#defines):

#define __forceinline inline
#define __forceinline 

However I still get the same error.

If in the dialog I do not specify the #define preprocessor command (i.e.: __forceinline inline), this is what I get:

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

Is there a way to compile such a piece of code, without using Visual C++?

like image 840
Pietro M Avatar asked Jan 17 '12 16:01

Pietro M


People also ask

What does howto mean?

: a practical method or instruction the how-tos of balancing a checkbook also : something (such as a book) that provides such instruction.

How to as a noun?

noun, plural how-tos. a set of step-by-step instructions for accomplishing a certain task or reaching a certain objective: a how-to for fixing a leaky faucet.

How to books meaning?

A how-to book provides instructions on how to do or make a particular thing, especially something that you do or make as a hobby.


1 Answers

The syntax is __forceinline=inline, as you've noted in the comments, because these settings get turned into -D options to GCC.

Note that inline is a strong hint to GCC that the function should be inlined, but does not guarantee it. The GCC equivalent of __forceinline is the always_inline attribute - e.g. this code:

#define __forceinline __attribute__((always_inline))

or equivalently this setting:

__forceinline="__attribute__((always_inline))"

(But this might well be unnecessary: if there was some particularly good reason for forcing this function to be inlined when compiling with MSVC, that reason may well not be valid when using a completely different compiler!)

like image 61
Matthew Slattery Avatar answered Nov 04 '22 22:11

Matthew Slattery