التغييرات الجذرية (Breaking Changes) فى ++Visual C

هذا مستند بسرد التغييرات فصل في Visual C++ 2010.

برنامج التحويل البرمجي الخاص ب ++Visual C

  • الـكلمة الأساسية التلقائية لها معنى افتراضي جديد. لأن استخدام المعاني القديمة نادر , معظم التطبيقات لن تتأثر بهذا التغير.

  • أساسية جديدة static_assert هو المقدمة، مما سيؤدي إلى حدوث تعارض اسم إذا حدث هو معرّف مسبقاً بهذا الاسم في تعليمات برمجية الخاصة بك.

  • دعم تمثيل لامدا (lambda) الجديد يستثني دعم كتابة تعليمات برمجية لـ GUID غير مقتبس (unquoted GUID) في سمة uuid خاصة بـ IDL.

  • .NET Framework 4 يقدم مفهوم "استثناءات الحالة التالفة " , وهى الاستثناءات التى تترك العملية في حالة تالفة غير قابلة للتعافي. افتراضياً، لا يمكن التقاط استثناء حالة تالفة حتى مع خيار المحول البرمجي / EHa الذي يمسك كافة الاستثناءات الأخرى.

    إلى صراحة تصفية باستثناء الولاية تالف، قم باستخدام __try-__except عبارات . أو طبق السمة [HandledProcessCorruptedStateExceptions] لتمكين دالة للإمساك (catch) باستثناءات الحالة التالفة.

    يؤثر هذا التغيير بشكل أساسي على مبرمجي النظام الذين قد يتوجب عليهم إمساك استثناء الحالة التالفة. الاستثناءات الثمانية هى STATUS_ACCESS_VIOLATION, STATUS_STACK_OVERFLOW ، EXCEPTION_ILLEGAL_INSTRUCTION ، EXCEPTION_IN_PAGE_ERROR ، EXCEPTION_INVALID_DISPOSITION ، EXCEPTION_NONCONTINUABLE_EXCEPTION ، EXCEPTION_PRIV_INSTRUCTION, STATUS_UNWIND_CONSOLIDATE. ‎لمزيد من التفاصيل حول هذه الاستثناءات، راجع القسمGetExceptionCodeماكرو.

  • خيار المحول البرمجي الذي تمت مراجعته /GS يحمي من تجاوزات المخزن المؤقت بشكل أشمل من الإصدارات السابقة. هذا الإصدار قد يقوم بإدراج فحوصات أمنية إضافية في المكدس مما قد يخفض الأداء. استخدم الكلمة الأساسية الجديدة __declspec(safebuffers) لإرشاد برنامج التحويل البرمجي لعدم إدراج فحوصات أمنية لدالة معينة.

  • إذا قمت بترجمة من /GL (تحسين أداء برنامج كامل) و /CLR (التصنيف وقت تشغيل اللغة العامة) خيارات المترجم ، /GLخيار هو تجاهل. هذا التغير قد تم بسبب توفير التركيبة من خيارات برنامج التحويل البرمجي القليل من الفائدة. نتيجة هذا التغير ، يتحسن أداء البناء.

  • بشكل افتراضي،الدعم لـ trigraphs يتم تعطيله فى Visual C++ 2010. استخدم خيار المحول البرمجي /Zc:trigraphs لتمكين دعم trigraphs. trigraph يتكون من علامتي الاستفهام متتاليتين ("؟؟") متبوعة بحرف فريد ثالث. المحول البرمجي يحل أحرف الترقيم المناظرة محل trigraph . على سبيل المثال، يستبدل المحول البرمجي الـ trigraph "؟؟= " بالحرف '#'. استخدم trigraphs في الملف المصدر C الذي يستخدم مجموعة أحرف لا تحتوي على تمثيلات رسومية ملائمة لبعض أحرف الترقيم.

  • برنامج الربط لم يعد يعتمد تحسين الأداء لـنظام التشغيل Windows 98. /OPT (أمثليات) خيار ينتج خطأ وقت ترجمة إذا قمت بتحديد /OPT:WIN98أو /OPT:NOWIN98.

  • الافتراضي تم تم تغييره المترجم الخيارات التي تعين بواسطة من RuntimeLibrary و DebugInformationFormat بنية خصائص النظام. بشكل افتراضي تاريخ الإنشاء هذه الخصائص المحددة في مشاريع التي يتم إنشاؤها بواسطة Visual C++الإصدارات 7.0 من خلال 10.0. في حالة ترحيل مشروع انشئت بواسطة Visual C++6.0، خذ بعين الاعتبار ما إذا كان إلى بتحديد القيمة لهذه الخصائص.

    في Visual C++ 2010، RuntimeLibrary = ذات مؤشرات ترابط متعددة (/MD) و DebugInformationFormat من ProgramDatabase (/Zi) =. في Visual C++الإصدار 9.0، RuntimeLibrary = ذات مؤشرات ترابط متعددة (/MT) و DebugInformationFormat معطّل =.

وقت تشغيل اللغة العامة (CLR)

  • يمكن الآن للمحول برمجي #Microsoft C و Visual Basic إنتاج لا تجميع توافق أساسي (لا PIA). التجميع "لا-PIA" يمكن أن يستخدم أنواع COM دون نشر تجميع التوافق الأساسي (PIA) ذى الصلة. عند استهلاك تجميع لا-PIA المنتج من قبل #Visual C أو Visual Basic ، يجب الرجوع إلى تجميع PIA على أمر الترجمة قبل الرجوع إلى أي تجميع "لا-PIA" يستخدم المكتبة.

مشاريع ++Visual C و MSBuild

  • مشاريع ++Visual C الآن تستند إلى أدوات MSBuild . وبالتالي، للمشروع الملفات استخدم تنسيق الملف XML جديد و .vcxprojلاحقة الملف. Visual C++ 2010يقوم تلقائياً بتحويل ملفات مشروع من الإصدارات السابقة منVisual Studioإلى الجديدة ملف تنسيق.

    يتأثر المشروع الموجود إذا كان يعتمد أداة البناء السابقة VCBUILD.exe أو لاحقة ملف المشروع .vcproj.

  • In earlier releases, Visual C++ supported the late evaluationof property sheets. على سبيل المثال، يمكن استيراد ورقة خصائص أصل ورقة خصائص طفل، ويمكن للموقع الأصل باستخدام متغير معرف في التابع إلى تعريف متغيرات غير ذلك. ممكّن التقييم المتأخر الأصل باستخدام المتغير التابع حتى قبل استيراد صفحة الخصائص التابعة. في Visual C++ 2010، لا يمكن استخدام متغير ورقة مشروع قبل معرفاً لأن MSBuildيعتمد التقييم المبكر فقط.

بيئات التطوير المتكاملة

  • إنهاء التطبيق فى مربع الحوار لم يعد ينهي التطبيق.

    في الإصدارات السابقة عندما تقوم الدالة abort() أو terminate() بإغلاق البناء المرفق لتطبيق ما , تعرض مكتبة وقت التشغيل C رسالة إنهاء تطبيق في نافذة وحدة التحكم أو مربع حوار. تقول الرسالة بشكل ما "طلب هذا التطبيق من وقت التشغيل الإنهاء بطريقة غير معتادة". الرجاء الاتصال بفريق دعم التطبيق للحصول على مزيد من المعلومات.

    كانت رسالة إنهاء تطبيق الزائدة لأن Windows فيما بعد بعرض معالج النهايات الطرفية الحالي، والتي عادة ما تم إرسال تقرير Windows عن الخطأ (د. صندوق الحوار Watson) أو Visual Studioمصحح الأخطاء. بدءا من Visual Studio 2010 ،مكتبة وقت التشغيل C لا تعرض الرسالة. علاوة على ذلك، يمنع وقت التشغيل التطبيق من الإنهاء قبل بدء تشغيل مصحح أخطاء.

    يعتبر هذا تغيرا جذريا فقط إذا كنت تعتمد على السلوك السابق لرسالة إنهاء التطبيق.

  • خصيصا من أجل Visual Studio 2010، خاصية التحسس الذكي لا تعمل مع C + +/CLI تعليمات برمجية أو السمات، لا يعمل بحث الكل المراجع للمتغيرات المحلية، و تعليمات برمجية طراز عدم استرداد أسماء الأنواع من تجميعات التي تم استيرادها أو أنواع حل إلى أسمائها مؤهل بشكل كامل.

مكتبات ++Visual C

  • يتم تضمين فئة SafeInt في ++Visual C ولم تعد تحمل بشكل منفصل. هذا تغيير جذري فقط إذا قمت بتطوير فئة تسمى أيضاً "SafeInt."

  • طراز نشر المكتبات لم يعد مستنداً إلى آلية fusion ولا تُستخدم ملفات البيان (manifests) بعد الآن. بدلاً من ذلك، اسم كل مكتبة ارتباط حيوي يحتوي على رقم الإصدار الخاص به.

مكتبة القالب القياسية

  • ملف الرأس <iterator> لم يعد يتم تضمينه تلقائياً من قبل العديد من ملفات الرأس الأخرى . بدلاً من ذلك , قم بتضمين ملف الرأس هذا بشكل صريح إذا احتجت دعم لـ iterators مستقلة معرفة في ملف الرأس <interator>.

  • في ملف الرأس <algorithm>، الدوال checked_* و unchecked_* تمت إزالتها. وفي ملف الرأس <iterator>، تم إزالة الفئة checked_iterator و إضافة الفئة unchecked_array_iterator .

  • تم إزالة المُنشئ CComPtr::CComPtr(int). يسمح ذلك المُنشئ بإنشاء الكائن CComPtr من الماكرو NULL، ولكنه لم يكن ضروريا و سمح لإنشاءات لا معنى لها من الأعداد الصحيحة التى لا تساوي الصفر.

    على CComPtrيمكن أن يستمر بناء من NULL، التي هو معرفة ك 0، ولكنها ستفشل إذا بناء من عددا صحيحاً غير 0 قيمة حرفية. تكون غالباً إلى تواجه هذه المشكلة في الحالة الموصوفة ب pseudo-تعليمات برمجية التالية.

    pair<X, CComPtr<T>> myVar;
    myVar = make_pair(x, NULL);
    

    إلى إصلاح العبارة ثانية، استخدم الكلمة الأساسية nullptr بدلاً من NULLالماكرو.

    myVar = make_pair(x, nullptr)
    
  • The following ctype عضو دالات were تمت إزالته: ctype::_Do_narrow_s, ctype::_Do_widen_s, ctype::_narrow_s, ctype::_widen_s. إذا كان تطبيق يستخدم واحد هذه الدالات عضو، يجب استبدال ذلك بالمقابل غير اﻷمن الإصدار: ctype::do_narrow, ctype::do_widen, ctype::narrow, ctype::widen.

مكتبات CRT, MFC و ATL

  • تمت إزالة دعم بناء مكتبات CRT , MFC و ATL للمستخدمين . على سبيل المثال، ملف nmake مناسب لم يعد متوفرا. ومع ذلك، لا يزال يملك المستخدمون حق الوصول لمصدر التعليمات البرمجية لهذه المكتبات. و غالبا سيتم نشر مستند يصف خيارات MSBuild التي تستخدمها Microsoft لبناء هذه المكتبات فى مدوّنة فريق ++Visual C .

  • تمت إزالة دعم MFC لـ IA64 . ومع ذلك، الدعم ل CRT وATL لا يزال يتم توفيره ل IA64.

  • ‏‫أعداد الترتيبية (Ordinals) لم يعد يتم إعادة استخدامها بعد الآن في ملفات تعريف الوحدة النمطية (.def)الخاصة بـ MFC يعني هذا التغيير انه لن يكون هناك اختلاف فى الأعداد الترتيبية بين الإصدارات الثانوية, و سيتم تحسين التوافق الثنائي لإصدارات هندسة الإصلاح السريع وحزم الخدمة.

  • تمت تمت الإضافة دالة ظاهري جديد إلى الفئة CDocTemplate. وهذا جديد دالة الظاهري هو من CDocTemplate::OpenDocumentFile. الإصدار السابق من OpenDocumentFileلها معلمات الثاني. الإصدار جديد يحتوي على معلمات الثلاثة. إلى تعتمد إدارة إعادة التشغيل، أي فئة مشتقة من CDocTemplateيجب تطبيق الإصدار يحتوي على ثلاث معلمات. ل المزيد من المعلومات حول دالة، راجع CDocTemplate::OpenDocumentFile. جديدة معلمة هو bAddToMRU.

وحدات الماكرو و متغيرات البيئة

  • متغير البيئة __MSVCRT_HEAP_SELECT لم يعد معتمدا بعد الآن. تم إزاله متغير البيئة هذا و لم يتم استبداله.

مرجع مجمع الماكرو الخاص ب Microsoft

راجع أيضًا:

موارد أخرى

الشروع في العمل مع 2010 ++Visual C