2010-09-30 16 views
6

J'écris du code où il y a un tas de fonctions pures simples qui s'appellent beaucoup. Il est parfaitement sûr que ces fonctions soient optimisées pour être appelées moins souvent.Existe-t-il un équivalent portable de __attribute__ (pure) de gcc?

Actuellement, je suis en utilisant gcc comme mon compilateur et je me demande s'il y a un moyen portable de faire:

int foo(int) __attribute__ ((pure)) 

infos sur le mot-clé pur se trouve ici: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure

Comment devrais-je mettre en œuvre quelque chose comme ceci si le mot-clé pur n'est pas disponible?

+2

La description des fonctions pures me rappelle les fonctions statiques de la classe. Sont-ils par hasard optimisés de la même manière avec des performances comparables? –

Répondre

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

Utilisez __pure lorsque vous en avez besoin

+0

J'aime cette suggestion mais j'espérais que je pourrais obtenir la même performance ailleurs.Si je ne peux pas je vais utiliser si. – shuttle87

+0

si vous voulez que la performance, faites votre fonction ' static inline' dans l'en-tête –

+0

Est-ce que static inline fera le même type d'optimisation que l'attribut pur? – shuttle87

7

Non, il n'y en a pas.

+0

:(Je me doutais que c'était le cas – shuttle87

1

Je pense que la manière portable est inline les fonctions et espère que le compilateur comprendre le reste.