Bagikan melalui


Compiler Warning (level 1) C4382

melemparkan 'type' : jenis dengan __clrcall destructor atau copy constructor hanya dapat ditangkap dalam modul /clr:pure

Keterangan

Opsi kompilator /clr:pure tidak digunakan lagi di Visual Studio 2015 dan tidak didukung di Visual Studio 2017.

Ketika dikompilasi dengan /clr (bukan /clr:pure), penanganan pengecualian mengharapkan fungsi anggota dalam jenis asli __cdecl dan tidak __clrcall. Jenis asli dengan fungsi anggota menggunakan __clrcall konvensi panggilan tidak dapat ditangkap dalam modul yang dikompilasi dengan /clr.

Jika pengecualian akan tertangkap dalam modul yang dikompilasi dengan /clr:pure, Anda dapat mengabaikan peringatan ini.

Untuk informasi selengkapnya, lihat /clr (Kompilasi Runtime Bahasa Umum).

Contoh

Sampel berikut menghasilkan C4382.

// C4382.cpp
// compile with: /clr /W1 /c
struct S {
   __clrcall ~S() {}
};

struct T {
   ~T() {}
};

int main() {
   S s;
   throw s;   // C4382

   S * ps = &s;
   throw ps;   // OK

   T t;
   throw t;   // OK
}