2012-01-17 14 views
5

Tengo un código de Microsoft (XLCALL.CPP) que estoy tratando de compilar con CodeBlocks/MinGW.
En esta línea aparece un error de tiempo de compilación:Cómo #definir __forceinline en línea?

__forceinline void FetchExcel12EntryPt(void) 

Este es el mensaje de error que consigo:

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

Se espera que este error, ya __forceinline es una adición específica de Microsoft para el lenguaje, no reconocido por GCC.

Por lo tanto, para hacer las cosas de compilación, intento agregar Thiese define en CodeBlocks (Proyecto Construir Opciones/configuración del compilador/# define):

#define __forceinline inline 
#define __forceinline 

Sin embargo sigo teniendo el mismo error.

Si en el diálogo no especifico el comando preprocesador #define (es decir: __forceinline inline), esto es lo que me sale:

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

¿Hay una manera de compilar una pieza de código, tal sin usando Visual C++?

+0

Parece que esta es la sintaxis: '__forceinline = inline' –

Respuesta

9

La sintaxis es __forceinline=inline, como ha notado en los comentarios, porque estas configuraciones se convierten en -D options to GCC.

Tenga en cuenta que inline es un claro indicio para GCC de que la función debe estar en línea, pero no lo garantiza. El equivalente de GCC de __forceinline es always_inline attribute - p. este código:

#define __forceinline __attribute__((always_inline)) 

o equivalentemente este ajuste:

__forceinline="__attribute__((always_inline))" 

(Pero esto podría muy bien ser innecesaria: si había algún particularmente buena razón para forzando esta función para ser inline al compilar con MSVC , esa razón puede no ser válida cuando se usa un compilador completamente diferente!)

Cuestiones relacionadas