編譯器錯誤 C3821
'function':在非受控函式中不可以使用受控類型或函式
內嵌元件或 setjmp 的函式不能包含實值型別或 Managed 類別。 若要修正此錯誤,請移除內嵌元件,或 setjmp
移除Managed物件。
如果您嘗試在 vararg 函式中使用自動記憶體,也可能會發生 C3821。 如需詳細資訊,請參閱 變數自變數清單 (...) (C++/CLI) 和 參考類型的C++堆棧語意。
範例
下列範例會產生 C3821。
// C3821a.cpp
// compile with: /clr /c
public ref struct R {};
void test1(...) {
R r; // C3821
}
下列範例會產生 C3821。
// C3821b.cpp
// compile with: /clr
// processor: /x86
ref class A {
public:
int i;
};
int main() {
// cannot use managed classes in this function
A ^a;
__asm {
nop
}
} // C3821