共用方式為


編譯器錯誤 C3068

'function' :如果發生C++例外狀況,'naked' 函式不能包含需要回溯的物件

編譯程式無法在擲回例外狀況的裸體函式上執行堆疊回溯,因為已在函式中建立暫存物件,且已指定C++例外狀況處理 (/EHsc) 。

若要解決此錯誤,請至少執行下列其中一項:

  • 請勿使用 /EHsc 編譯。

  • 請勿將函式標示為 naked

  • 請勿在函式中建立暫存物件。

如果函式在堆疊上建立暫存物件,如果函式擲回例外狀況,而且如果已啟用C++例外狀況處理,則編譯程式會在擲回例外狀況時清除堆疊。

擲回例外狀況時,編譯程式產生的程式代碼會針對函式執行,稱為 prolog 和 epilog,且不存在於裸體函式中。

範例

下列範例會產生 C3068:

// C3068.cpp
// compile with: /EHsc
// processor: x86
class A {
public:
   A(){}
   ~A(){}
};

void b(A){}

__declspec(naked) void c() {
   b(A());   // C3068
};