2013-01-05 47 views
2

可以告訴某人C++中這意味着什麼? (在一個函數前面) 同樣我如何找到關於這個問題的東西。關於__attribute__和noinline(GCC)的問題

__attribute__ ((noinline)) 

謝謝。問候

+2

面前這意味着,編譯器將這個函數不應該內嵌調用。在「機器對話」中,這意味着它迫使編譯器將該函數存儲在一個地方,並且始終從所有的調用地點對其進行調用:如果留給自己,它可能會選擇將該函數的代碼包含到它被稱爲,而不是在一些呼叫站點 - 甚至全部,如果功能很小。 – fge

+0

@fge你想發佈一個答案嗎?所以他可以把它作爲未來訪問者的正確答案? – 2013-01-05 18:11:45

+0

@DumbProducts太晚了:p – fge

回答

3

GCC定義了許多不同的非標準function attributes用於指示功能的特殊功能。這些通常用於優化或處理特定於平臺的功能。

在這種情況下,noinline屬性表示「不要在任何情況下內聯該函數」,否則優化器可能會內聯該函數。

1

這個屬性的名字意味着什麼。作爲一種重度優化,編譯器可能會選擇內聯較小的函數以避免函數調用的開銷。如果你不希望你的函數由於某種原因被內聯,你可以使用這個nonstandard attribute來防止編譯器進行這種優化。

它是一個功能

要了解屬性是如何被GCC語法組織,看到this guide.