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 特定的
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應