naked (C++)

Microsoft 特定的

針對使用 屬性宣告的 naked 函式,編譯器會產生不含初構和表文程式碼的程式碼。 利用此功能就可以使用內嵌組合語言程式碼撰寫您自己的初構/終解程式碼序列。 naked 函式在撰寫虛擬裝置驅動程式方面特別實用。 請注意,屬性 naked 只在 x86 和 ARM 上有效,且不適用於 x64。

語法

__declspec(naked) declarator

備註

naked因為 屬性只與函式的定義相關,而且不是型別修飾詞,因此裸體函式必須使用擴充屬性語法和 __declspec 關鍵字。

編譯器無法為以裸體屬性標示的函式產生內嵌函式,即使函式也以 __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

END Microsoft 特定的

另請參閱

__declspec
關鍵字
Naked 函式呼叫