Aracılığıyla paylaş


Derleyici Hatası C3068

'function' : 'naked' işlevi, bir C++ özel durumu oluştuğunda geri sarmayı gerektirecek nesneler içeremez

Açıklamalar

Derleyici, işlevde geçici bir nesne oluşturulduğu ve C++ özel durum işlemesi (/EHsc) belirtildiği için özel durum oluşturan çıplak bir işlevde yığın geri sarma işlemi gerçekleştiremedi.

Bu hatayı çözmek için aşağıdakilerden en az birini yapın:

  • /EHsc ile derlemeyin.

  • işlevini olarak nakedişaretlemeyin.

  • İşlevde geçici bir nesne oluşturmayın.

Bir işlev yığında geçici bir nesne oluşturursa, işlev bir özel durum oluşturursa ve C++ özel durum işlemesi etkinleştirilirse, özel durum oluşturulursa derleyici yığını temizler.

Özel durum oluşturulduğunda, bir işlev için prolog ve epilog adlı ve çıplak bir işlevde bulunmayan derleyici tarafından oluşturulan kod yürütülür.

Örnek

Aşağıdaki örnek C3068 oluşturur:

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

void b(A){}

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