/clr القيود

لاحظ القيود التالية تشغيل استخدم /clr:

  • في معالج استثناء مصنفة، توجد قيود تشغيل استخدام _allocaعند ترجمة مع /clr. ل المزيد من المعلومات، راجع _alloca .

  • استخدام التشغيل-الوقت خطأ اختبار غير صحيح مع /clr. للحصول على مزيد من المعلومات، راجع الاختبارات خطأ وقت التشغيل.

  • عند /clrهو يستخدم لترجمة برنامج يستخدم بناء الجملة C + + القياسية فقط، تنطبق الإرشادات التالية باستخدام تجميع مضمنة:

    • قد يفشل استدعاء اصطلاحات خارج دالة الحالي، أو معلومات غير ذلك ذات المستوى المنخفض حول الكمبيوتر رمز تجميع مضمنة يفترض معرفة تخطيط مكدس الأصلي، إذا كان ذلك معرفة هو المطبق على إطار مكدس الذاكرة المؤقتة لدالة مدارة. الدالات التي تحتوي على تجميع مضمنة تعليمات برمجية المكونة كوظائف لم تتم إدارته، كما لو أنها تم وضعه في وحدة نمطية منفصلة تم تحويله برمجياً دون /clr.

    • رمز تجميع المضمنة في الدالات تمرير معلمات دالة بناء على نسخ هو غير معتمد.

  • دالات vprintf لا يمكن استدعاء من برنامج التحويل البرمجي مع /clr.

  • The naked __declspec modifier is ignored under /clr.

  • تعيين دالة مترجم بواسطة سيؤثر _set_se_translator catches في تعليمات برمجية غير المدارة فقط. لمزيد من المعلومات، راجع Exception Handling under /clr.

  • comparهوon مؤشرات دالة هو غير مسموح بها تحت /clr.

  • استخدام الدالات غير prototyped بشكل كامل هو غير مسموح بها تحت /clr.

  • خيارات المترجم التالية غير معتمدة مع /clr:

  • التركيبة من _STATIC_CPPLIBتعريف معالج أولي ( /D_STATIC_CPPLIB) و /clrأو /clr:pureخيار المترجم هو غير معتمد. Th هو هو في هذه الحالة لأنه قد يتسبب التعريف تطبيق الخاص بك لربط مع ثابتة ذات مؤشرات ترابط متعددة "قياسي C + + مكتبة"، والتي هو غير معتمد. لمزيد من المعلومات، راجع هذه الموضوع /MD،/MT،/LD (استخدم وقت التشغيل مكتبة).

  • /J هو غير معتمد مع /clr:safeأو /clr:pure.

  • في Visual C++ 2005، لا يتم دعم مكتبات ATL و MFC بواسطة التحويل البرمجي لوضع خالص ( /clr:pure). يمكنك استخدم /clr:pure"مكتبة C + + قياسي" وعرض CRT إذا قمت أيضا بترجمة مع /MDأو /MDd.

  • عند استخدام /Zi /clr، توجد ضمانات الأداء. للحصول على مزيد من المعلومات، راجع /Zi .

  • إخراج Pكـsing حرف عريض إلى.NET Framework روتين بدون أيضا تحديد /Zc:wchar_t أو بدون cكـting أن الحرف __wchar_tيؤدي الإخراج إلى ظهور كـ unsigned short int. فعلى سبيل المثال:

    Console::WriteLine(L' ')              // Will output 32.
    Console::WriteLine((__wchar_t)L' ')   // Will output a space.
    
  • /GS هو تجاهل عند التحويل البرمجي مع /clr، إلا إذا دالة هو تحت #pragma غير مدار أو ما إذا كان الدالة يجب أن يكون للاصلي، في هذه الحالة يقوم المحول البرمجي بإنشاء تحذير C4793، الذي هو قيد إيقاف التشغيل بشكل افتراضي.

  • راجع /إدخال لمتطلبات توقيع دالة مدارة تطبيق.

  • التطبيقات المترجمة مع /openmpو /clrيمكن تشغيلها فقط مفرد مجال التطبيق العملية. لمزيد من المعلومات، راجع /openmp (تمكين OpenMP 2.0 دعم).

  • سيتم إنشاء الدالات التي تأخذ عدد متغير من الوسيطات (varargs) ك أصلي الوظائف. يمكن تنظيم أي أنواع بيانات التي تمت إدارتها في الموضع وسائط المتغيرات إلى الأنواع الأصلية. لاحظ أن System.Stringأنواع سلاسل الأحرف كبيرة بالفعل، ولكن يتم تنظيم هذه إلى سلاسل الأحرف أحادية البايت. وفي هذه الحالة إذا كان المحدد printf هو%S (wchar_t *)، سيتم تنظيم سلسلة%s بدلاً من ذلك.

  • عند استخدام الماكرو va_arg، قد يحصل نتائج غير متوقعة عند التحويل البرمجي مع /clr:pure. لمزيد من المعلومات، راجع va_arg va_end ، va_start.

  • يجب أن لا استدعاء، من تعليمات برمجية تمت إدارتها، أي من الوظائف التي تقود المكدس إلى الحصول على معلومات معلمة (وسائط دالة)؛ الطبقة P/Invoke تؤدي تلك المعلومات إلى تكون إضافية لأسفل المكدس. ل مثال، قم بتجميع وكيل/كعب مع لا /clr.

  • سوف يتم تصنيف وظائف ل تعليمات برمجية مُدارة حينما بنيات C + + ممكن، وليس كلها يمكن أن تترجم إلى تعليمات برمجية مُدارة. Th هو تحديد هو تشغيل bas وظيفة بدالة هو. إذا كان لا يمكن محول أي جزء من دالة إلى تعليمات برمجية تمت إدارتها، سيتم محول الدالة بالكامل إلى تعليمة برمجية أصلية بدلاً من ذلك. منع الحالات التالية المحول البرمجي من إنشاء تعليمات برمجية المدارة.

    • thunks من قبل برنامج التحويل البرمجي أو دالات المساعدة. أصلي thunks المكونة لأي استدعاء دالة من خلال مؤشر دالة، بما في ذلك استدعاء دالة الظاهري.

    • دالات that callsetjmpأوlongjmp.

    • دالات التي تستخدم بعض الإجراءات المضمنة لمعالجة موارد آلة مباشرة. على سبيل المثال، استخدم __enableو __disable، _ReturnAddressو _AddressOfReturnAddress، أو intrinsics الوسائط المتعددة بكافة النتائج في تعليمات برمجية الأصلية.

    • الدالات التي تتبع #pragma unmanagedالتوجيه. (لاحظ أنه معكوس، #pragma managed، هو معتمدة أيضا.)

    • دالة تحتوي على مراجع إلى أنواع الذي تمت محاذاته، وهي الأنواع التي تم تعريفها باستخدام __declspec(align(...)).

  • لا يمكنك استخدم Compiler COM Supportالفئات ذات /clr:pureأو /clr:safe.

راجع أيضًا:

المرجع

/clr (التحويل البرمجي وقت تشغيل اللغة العامة)