Aracılığıyla paylaş


/CLR kısıtlamaları

Kullanımı ile ilgili aşağıdaki sınırlamaları unutmayın /clr:

  • Yapılandırılmış özel durum işleyicisi kullanarak kısıtlamaları vardır _alloca ile derlerken /clr. Daha fazla bilgi için bkz: _alloca.

  • Çalışma zamanı hata denetimlerinin kullanımı ile geçerli değil /clr. Daha fazla bilgi için Hata çalıştırma denetler.

  • Zaman /clr ise yalnızca standart C++ sözdizimini kullanan bir programı derlemek için kullanılan, satır içi derleme kullanmak için aşağıdaki kurallar uygulanır:

    • Yerel yığın düzeni bilgi varsayan satır içi derleme kod arama kuralları geçerli işlevi ya da diğer alt düzey bilgisayar bilgileri dışında bilgi yığını çerçeve yönetilen bir işlev için uygulanan başarısız olabilir. Satır içi derleme kod içeren işlevleri, yönetilmeyen işlevlere oluşturulur, olmadan derlenmiş ayrı bir modül içinde yerleştirilmiş gibi /clr.

    • Satır içi derleme kodu kopya olarak hazırlanan işlev parametreleri işlevleri desteklenmez.

  • Vprintf işlevleri ile derlenmiş bir programdan çağrılamaz /clr.

  • Çýplak__declspec /clr altında değiştirici yoksayılır. 

  • Çevirici işlevi belirlediği _set_se_translator yalnızca yönetilmeyen kod catches etkileyecektir. Daha fazla bilgi için bkz. Özel Durum İşleme (C++ Bileşen Uzantıları).

  • İşlev işaretçileri karşılaştırmasını altında izin verilmeyen /clr.

  • Tam olarak prototyped olmayan işlevleri kullanımı altında izin verilmeyen /clr.

  • Aşağıdaki derleyici seçenekleri ile desteklenmeyen /clr:

  • Birlikte _STATIC_CPPLIB Önişlemci tanımı (/D_STATIC_CPPLIB) ve /clr veya /clr:pure derleyici seçeneği desteklenmez. Tanım statik çok iş parçacıklı Standart C++ desteklenmeyen kitaplığı ile bağlamak, uygulamanızın neden olacağından bunu budur. Daha fazla bilgi için bkz: / md, /mt, /ld (çalışma zamanı kitaplığı kullanın) konu.

  • /j ile desteklenmeyen /clr:safe veya /clr:pure.

  • atl ve mfc kitaplıklarını saf modda derleme tarafından desteklenmiyor (/clr:pure). Kullanabileceğiniz /clr:pure Standart C++ Kitaplığı ve ayrıca ile derlerseniz crt /MD veya /MDd.

  • Kullanırken /Zi ile /clr, Performans etkileri vardır. Daha fazla bilgi için bkz: /Zi.

  • Geniş bir karakter geçirerek bir.net Framework yordamı da belirtmeden çıktı /Zc:wchar_t ya da karakter çevrim olmadan __wchar_t çıkış olarak görünmesini neden olacak bir unsigned short int. Örne?in:

    Console::WriteLine(L' ')              // Will output 32.
    Console::WriteLine((__wchar_t)L' ')   // Will output a space.
    
  • /gs ile derlerken göz ardı /clr, altında bir işlevi olmadığı sürece #pragma yönetilmeyen veya işlevi için yerel olarak derlenmeli durumda derleyici oluşturmanız varsayılan olarak kapalıdır C4793, uyarı.

  • Bkz: /entry yönetilen uygulamanın işlevi imza gereksinimleri için.

  • Derlenmiş uygulamalar ile /openmp ve /clr yalnızca bir tek appdomain işlemde çalıştırılabilir. Daha fazla bilgi için bkz. /OpenMP (OpenMP 2.0 desteğini etkinleştir).

  • Değişken sayıda bağımsız değişken (varargs) ele işlevleri özgün işlev üretilecektir. Değişken bağımsız değişken konumundaki tüm yönetilen veri türleri, doğal türlerine sıralanmış. Dikkat System.String türleri gerçekte geniş karakter dizeleri olduğu halde, tek baytlı karakter dizeleri sıralanmış. Printf belirleyici %s (wchar_t *) ise, bu nedenle onu bir %s dizesi yerine sıralama.

  • Va_arg makro kullanırken ile derlerken beklenmeyen sonuçlar alabilirsiniz /clr:pure. Daha fazla bilgi için bkz. va_arg va_end, va_start.

  • Uygulamanızın türünde bir bağımsız değişken geçerse VA_LIST yararlanmak için bildirilen bir işlev için bir sayılarda bağımsız değişken, ve uygulama ile derlenmiş /clr:pure, clr yaratmaz NotSupportedException. /clr Kullanılan etkilenen işlevler yerine, yerel kod derlenmiş ve düzgün yürütmek. /clr:safe Olan kullanıldığında, bir hata tanılama yayınlanır.

  • Size, yönetilen koddan (fonksiyon bağımsız değişkenleri); parametre bilgilerini almak için yığın Yürüyüş herhangi bir işlev çağırmalıdır. p/Invoke katmanı yığın daha fazla olması bu bilgileri neden olur. Örneğin, proxy/stub derleme değil /clr.

  • İşlevler, yönetilen kod için mümkün olan her durumda derleneceği, ancak tüm C++ yapýlarý için yönetilen kod çevrilebilir. Bu belirleme işlevi işlev için ayrı ayrı yapılır. Yönetilen kod herhangi bir bölümünü bir işlev dönüştürülemiyorsa, tüm işlev yerel kod yerine dönüştürülecektir. Aşağıdaki durumlarda derleyici yönetilen kod oluşturmasını engeller.

    • Thunks derleyici tarafından oluşturulmuş veya yardımcı işlevlerini. Yerel thunks sanal işlev çağrıları da dahil olmak üzere bir işlev işaretçisi üzerinden herhangi bir işlev çağrısı için oluşturulur.

    • Bu çağrı işlevleri setjmp veya longjmp.

    • Doğrudan makine kaynakları yönetmek için belirli iç yordamları kullanmak fonksiyonlar Örneğin, kullanımı __enable ve __disable, _ReturnAddress ve _AddressOfReturnAddress, ya da çoklu ortam iç bilgileri yerel kodda tüm sonuç olur.

    • Connected işlevleri #pragma unmanaged yönergesi. (Unutmayın, ters #pragma managed, da desteklenir.)

    • Başvurular içeren bir işlev hizalı türleri, diğer bir deyişle türleri kullanılarak bildirilen __declspec(align(...)).

  • Kullanamazsınız Derleyici com Destek ile sınıfları /clr:pure veya /clr:safe.

Ayrıca bkz.

Başvuru

/CLR (ortak dil çalışma zamanı derleme)