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
}