2010-09-30 8 views
6

Estoy escribiendo un código donde hay un montón de funciones simples y simples que se llaman mucho. Es perfectamente seguro si estas funciones se optimizan para ser llamadas con menos frecuencia.¿Hay un equivalente portátil de __attribute__ (puro) de gcc?

Actualmente estoy usando gcc como compilador de mi y yo estoy preguntando si hay una manera de hacer portátil:

int foo(int) __attribute__ ((pure)) 

Información sobre la palabra clave puro se puede encontrar aquí: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure

Cómo ¿Podría implementar algo así si la palabra clave pura no está disponible?

+2

La descripción de funciones puras me recuerda a las funciones estáticas de clase. ¿Están por casualidad optimizados de manera similar con un rendimiento comparable? –

Respuesta

5
#ifdef __GNUC__ 
#define __pure __attribute__((pure)) 
#else 
#define __pure 
#endif 

Uso __pure cuando lo necesite

+0

Me gusta esta sugerencia, sin embargo, esperaba poder obtener el mismo rendimiento en otra parte. Si no puedo, usaré esto. – shuttle87

+0

si quieres ese rendimiento, haz tu función ' static inline' en el encabezado –

+0

¿La línea estática en línea hará el mismo tipo de optimización que el atributo puro? – shuttle87

7

No, no lo hay.

+0

:(Sospeché que este era el caso. – shuttle87

1

creo que la manera portátil es a las funciones inline y esperar que el compilador averiguar el resto.

Cuestiones relacionadas