/clr
Kısıtlama -ları
kullanımıyla /clr
ilgili aşağıdaki kısıtlamalara dikkat edin:
Yapılandırılmış bir özel durum işleyicisinde, ile
/clr
derlenirken kullanımıyla_alloca
ilgili kısıtlamalar vardır. Daha fazla bilgi için bkz._alloca
.çalışma zamanı hata denetimlerinin kullanımı ile
/clr
geçerli değildir. Daha fazla bilgi için bkz . Nasıl yapılır: Yerel çalışma zamanı denetimlerini kullanma./clr
Yalnızca standart C++ söz dizimi kullanan bir programı derlemek için kullanıldığında, satır içi derleme kullanımı için aşağıdaki yönergeler geçerlidir:Yerel yığın düzeni, geçerli işlevin dışında kuralları çağırma veya yönetilen bir işlev için yığın çerçevesine bu bilgi uygulandığında bilgisayarla ilgili diğer alt düzey bilgileri çağıran satır içi derleme kodu başarısız olabilir. Satır içi derleme kodu içeren işlevler, olmadan
/clr
derlenmiş ayrı bir modüle yerleştirilmiş gibi yönetilmeyen işlevler olarak oluşturulur.Kopyalanmış işlev parametrelerini geçiren işlevlerde satır içi derleme kodu desteklenmez.
vprintf
İşlevler ile/clr
derlenmiş bir programdan çağrılamıyor.naked
__declspec
Değiştirici altında/clr
yoksayılır.tarafından
_set_se_translator
ayarlanan translator işlevi yalnızca yönetilmeyen koddaki yakalamaları etkiler. Daha fazla bilgi için bkz . Özel durum işleme.altında işlev işaretçilerinin karşılaştırılmasına
/clr
izin verilmez.altında tam prototipi olmayan işlevlerin kullanılmasına
/clr
izin verilmez.Aşağıdaki derleyici seçenekleri ile
/clr
desteklenmez:/EHsc
ve/EHs
(/clr
anlamına gelir/EHa
(bkz/EH
. (Özel Durum İşleme Modeli))/fp:strict
ve/fp:except
(bkz/fp
. (Kayan Nokta Davranışını Belirtme))
Ön işlemci tanımı (
/D_STATIC_CPPLIB
) ile derleyici seçeneğinin/clr
birleşimi_STATIC_CPPLIB
desteklenmez. Bunun nedeni, tanımın uygulamanızın desteklenmeyen statik, çok iş parçacıklı C++ Standart Kitaplığı ile bağlantı oluşturmasına neden olmasıdır. Daha fazla bilgi için bkz/MD
. ,/MT
,/LD
(Çalışma Zamanı Kitaplığını Kullanma).ile
/clr
kullandığınızda/Zi
, performans etkileri vardır. Daha fazla bilgi için bkz./Zi
.Bir .NET Framework çıkış yordamına, karakteri belirtmeden
/Zc:wchar_t
veya atamadan geniş bir karakter_wchar_t
geçirmek, çıkışın olarakunsigned short int
görünmesine neden olur. Örneğin:Console::WriteLine(L' ') // Will output 32. Console::WriteLine((__wchar_t)L' ') // Will output a space.
/GS
ile derlenirken/clr
, bir işlev altında#pragma unmanaged
olmadığı veya işlevin yerel kod olarak derlenmesi gerekmediği sürece yoksayılır; bu durumda derleyici varsayılan olarak kapalı olan C4793 uyarısını oluşturur.Yönetilen uygulamanın işlev imzası gereksinimleri için bkz
/ENTRY
.ve
/clr
ile/openmp
derlenen uygulamalar yalnızca tek bir uygulama etki alanı işleminde çalıştırılabilir. Daha fazla bilgi için bkz/openmp
. (OpenMP 2.0 Desteğini Etkinleştirme).Değişken sayıda bağımsız değişken (varargs) kullanan işlevler yerel işlevler olarak oluşturulur. Değişken bağımsız değişken konumundaki tüm yönetilen veri türleri yerel türlere sıralanır. Herhangi bir System.String tür aslında geniş karakter dizeleridir, ancak tek baytlı karakter dizeleri için sıralanır. Bu nedenle, tanımlayıcı
printf
()wchar_t*
ise%S
bunun yerine bir%s
dizeye göre sıralanır.Makroyu
va_arg
kullanırken, ile/clr:pure
derleme yaparken beklenmeyen sonuçlar alabilirsiniz. Daha fazla bilgi için bkz.va_arg
,va_copy
,va_end
,va_start
./clr:pure
ve/clr:safe
derleyici seçenekleri Visual Studio 2015'te kullanım dışıdır ve Visual Studio 2017 ve sonraki sürümlerde desteklenmez. "Saf" veya "güvenli" olması gereken kod C# öğesine aktarılmalıdır.Yönetilen koddan parametre bilgilerini (işlev bağımsız değişkenleri) almak için yığında gezinen işlevleri çağırmamalısınız. P/Invoke katmanı, bu bilgilerin yığının daha aşağısına inmelerine neden olur. Örneğin, ile
/clr
proxy/stub derlemeyin.İşlevler mümkün olduğunda yönetilen koda derlenir, ancak tüm C++ yapıları yönetilen koda çevrilemez. Bu belirleme, işlev bazında yapılır. bir işlevin herhangi bir bölümü yönetilen koda dönüştürülemezse, işlevin tamamı yerel koda dönüştürülür. Aşağıdaki durumlar derleyicinin yönetilen kod oluşturmasını engeller.
Derleyici tarafından oluşturulan thunk'lar veya yardımcı işlevler. Sanal işlev çağrıları dahil olmak üzere bir işlev işaretçisi aracılığıyla herhangi bir işlev çağrısı için yerel thunk'lar oluşturulur.
veya
longjmp
çağıransetjmp
işlevler.Makine kaynaklarını doğrudan işlemek için belirli iç yordamları kullanan işlevler. Örneğin, ve
__disable
ve_ReturnAddress
ve_AddressOfReturnAddress
veya multimedya iç kodlarının kullanımı__enable
yerel kodla sonuçlanır.yönergesini
#pragma unmanaged
izleyen işlevler. (Tersi de#pragma managed
desteklenir.)Hizalanmış türlere, yani kullanılarak
__declspec(align(...))
bildirilen türlere başvurular içeren bir işlev.