naked (C++)

Microsoft 專有的

以宣告的函式的naked屬性,編譯器會產生沒有初構和終解程式碼的程式碼。您可以使用這項功能來撰寫您自己使用內嵌組譯程式碼的初構/終解程式碼順序。Naked 的函式是在撰寫虛擬裝置驅動程式特別有用。請注意, naked屬性是只能在 x86 上有效,而且並沒有出現在x64或Itanium。

__declspec(naked) declarator

備註

因為naked屬性才有意義的函式定義,並不是型別修飾詞時,naked 函式必須使用擴充的屬性的語法和 __declspec 關鍵字。

編譯器無法產生 naked 搭配,一起使用的函式內嵌函式,即使該函式也會以標記 __forceinline 關鍵字。

如果,編譯器會發出錯誤naked屬性會套用至非成員方法的定義以外的任何項目。

範例

這段程式碼定義的函式naked屬性:

__declspec( naked ) int func( formal_parameters ) {}

或者,或者:

#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}

naked屬性會影響的函式的初構和終解序列的編譯器的程式碼產生的本質。它不會影響呼叫這類函式所產生的程式碼。因此, naked屬性不是函式之型別的一部分,而且不能有函式指標, naked屬性。此外, naked屬性無法套用到資料定義。比方說,這個程式碼範例會產生錯誤:

__declspec( naked ) int i;       // Error--naked attribute not
                                 // permitted on data declarations.

naked屬性是只與相關的函式定義,而且不能在函式的原型指定。比方說,這項宣告會產生編譯器錯誤:

__declspec( naked ) int func();  // Error--naked attribute not 
                                 // permitted on function declarations

結束 Microsoft 特定

請參閱

參考

__declspec

C + + 關鍵字

Naked 函式呼叫