Aracılığıyla paylaş


Derleyici uyarı (düzey 1 ve 3) C4793

'function': işlevi derlenmiş yerel kod: 'neden'

Derleyici derlenemiyor işlevi yönetilen koda olsa /clr derleyici seçeneği belirtilmiş.Bunun yerine, derleyici uyarı C4793 ve açıklayıcı devamı iletisi gösterir ve sonra derler işlevi yerel koda.Devamı ileti içeren neden nedenini açıklayan bir metin işlevi için derlenemez MSIL.

Bu, belirttiğiniz zaman bir düzey 1 uyarı, /clr:pure derleyici seçeneği.

Aşağıdaki tabloda, tüm olası devamı iletileri listeler.

Neden ileti

Notlar

Yönetilen kodda hizalı veri türleri desteklenmiyor

clr, veri bildirimlerle gibi hizalanmışsa mümkün değildir verileri gerektiği gibi ayıramadığı olmalıdır __m128 veya Hizalama.

Yönetilen kodda '__ImageBase' kullanın işlevler desteklenmiyor

__ImageBaseyalnızca alt düzey yerel kodla bir dll yüklenemedi tipik olarak kullanılan bir özel linker sembolüdür.

varargs değil tarafından desteklenen ' / clr' derleyici seçeneği

Özgün işlevler yönetilen işlevleri çağırmak Değişken bağımsız değişken listeler (varargs) işlevlerinin farklı yığın düzeni gereksinimleri yoktur çünkü.Ancak, belirttiğiniz /clr:pure derleyici seçeneği, değişken bağımsız değişken listeleri yalnızca işlevler yönetilen derleme içerebildiği için desteklenir.Daha fazla bilgi için bkz. Saf ve doğrulanabilir kod (C++/ CLI).

64-Bit clr __ptr32 değiştiricisi ile verileri desteklemez

Bir işaretçi geçerli platform üzerinde yerel bir işaretçi ile aynı boyutta olması gerekir.Daha fazla bilgi için bkz. __ptr32, __ptr64.

32-Bit clr __ptr64 değiştiricisi ile verileri desteklemez

Bir işaretçi geçerli platform üzerinde yerel bir işaretçi ile aynı boyutta olması gerekir.Daha fazla bilgi için bkz. __ptr32, __ptr64.

Yönetilen kodda bir veya daha fazla iç bilgileri desteklenmiyor

Gerçek adı ileti yayınlanır anda kullanılamaz.Bununla birlikte, bir iç bu ileti genellikle neden olan bir alt düzey makine yönergesi gösterir.

Satır içi doğal derleme ('__asm') içinde yönetilen kod desteklenmiyor

Satır içi derleme kod yönetilemez rasgele yerel kod içerebilir.

__Clrcall sanal işlevi thunk olarak doğal olarak derlenmeli

Bir olmayan-__clrcall sanal işlev thunk yönetilmeyen bir adresi kullanması gerekir.

'_Setjmp' kullanarak bir işlev olarak doğal olarak derlenmeli

clr program yürütme denetlemek olması gerekir.Ancak, setjmp işlevi Normal program yürütme kaydetme ve kayıtları ve yürütme durumu gibi alt düzey bilgileri geri atlar.

Örnek

Aşağıdaki örnek C4793 oluşturur.

// C4793.cpp
// compile with: /c /clr /W3 
// processor: x86
int asmfunc(void) {   // C4793, compiled as unmanaged, native code
   __asm {
      mov eax, 0
   }
}
  

Aşağıdaki örnek C4793 oluşturur.

// C4793_b.cpp
// compile with: /c /clr /W3
#include <setjmp.h>
jmp_buf test_buf;

void f() {
   setjmp(test_buf);   // C4793 warning
}