2010-09-30 64 views
6

我寫了一些代碼,其中有一堆簡單的純函數會被調用很多。如果這些函數得到優化而不經常被調用,這是非常安全的。有沒有gcc的__attribute__(純)的便攜式等價物?

目前我使用gcc作爲我的編譯器,我想知道是否有這樣做的一個可移植的方式:

int foo(int) __attribute__ ((pure)) 

信息關於純關鍵字可以在這裏找到: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure

如何如果純關鍵字不可用,我會去執行這樣的事情嗎?

+2

純函數的描述讓我想起了類靜態函數。他們是否有可能以類似的方式優化其性能? – 2010-09-30 06:57:10

回答

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

使用__pure當你需要它

+0

我喜歡這個建議,但是我希望我能在其他地方獲得同樣的表現如果我不能,我會使用這個雖然 – shuttle87 2010-09-30 06:34:41

+0

如果你想要這樣的性能,靜態內聯「 – 2010-09-30 23:33:15

+0

靜態內聯是否會與純屬性進行相同的優化? – shuttle87 2010-10-04 15:08:59

7

不,沒有。

+0

:(我懷疑是這樣的情況 – shuttle87 2010-09-30 05:40:46

1

我認爲簡單的方法是內聯函數,並希望編譯器會找出休息。