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 特定的