2010-09-30 9 views
6

Piszę kod, w którym jest kilka prostych, czystych funkcji, które często są nazywane. Jest całkowicie bezpieczne, jeśli funkcje te zostaną zoptymalizowane, aby można było rzadziej je wywoływać.Czy istnieje przenośny odpowiednik __attribute__ (czysty) gcc?

Obecnie używam kompilatora gcc jak moje i zastanawiam się, czy jest przenośny sposób to zrobić:

int foo(int) __attribute__ ((pure)) 

Informacje o czystej słów kluczowych można znaleźć tutaj: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure

Jak czy chciałbym wprowadzić coś takiego, jeśli czyste słowo kluczowe nie jest dostępne?

+2

Opis czystych funkcji przypomina mi funkcje statyczne klasy. Czy są one przypadkiem zoptymalizowane w podobny sposób przy porównywalnej wydajności? –

Odpowiedz

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

Zastosowanie __pure kiedy trzeba to

+0

Podoba mi się ta sugestia jednak liczyłem na to, że uda mi się uzyskać tę samą wydajność gdzie indziej.Jeśli nie mogę, użyję tego chociaż: – shuttle87

+0

jeśli chcesz tego wykonania, zrób swoją funkcję ' static inline' w nagłówku –

+0

Czy statyczny inline zrobi ten sam rodzaj optymalizacji co czysty atrybut? – shuttle87

1

myślę przenośny sposobem jest inline funkcji i nadzieję, że kompilator będzie dowiedzieć się resztą.

Powiązane problemy