سؤال

ما هي كل المشكلة التي تتوقعها في القيام بذلك.

هل كانت مفيدة؟

المحلول

  1. لم يعد VC 6 مدعومًا من Microsoft, ، بأي طريقة.إذا حدث خطأ ما ولم نتمكن من التجميع لأي سبب من الأسباب، فسنكون بمفردنا غير قادرين على الحصول على أي مساعدة من Microsoft.يبدو من غير المرجح أن يحدث خطأ ما بهذه الطريقة، ولكن إذا كانت الشفرة المعنية هي المصدر الرئيسي للدخل، فيجب عليك أن تأخذ الأمور في الاعتبار.
  2. من المستحيل تجميع كود 64 بت في VC6.تعمل برامج 32 بت على نظام التشغيل Windows 64 بت - على الأقل في الوقت الحالي.ولكن إذا كنت بحاجة إلى الاستفادة من السرعة المحتملة ومكاسب الذاكرة من إنشاء منتج 64 بت أصلي (على سبيل المثال، القدرة على استخدام أكثر من 3 جيجابايت من ذاكرة الوصول العشوائي في عملية واحدة)، فإن VC6 قد تم إيقافه.
  3. يتمتع VC9 بامتثال أفضل للمعايير.كان الامتثال لمعايير VC6 سيئًا للغاية.وهذا في الواقع سبب للنقل وربما سبب لعدم القيام بذلك.لقد اعتاد المبرمجون الذين استخدموا VC6 على القيام بالأشياء "بطريقة خاطئة"، وسيحتاج الكثير من هذه التعليمات البرمجية إلى إعادة هيكلتها للعمل في VC9.

مثال بسيط على رقم 3 أعلاه هو حلقة for:

for( int n = 0; n < someMax; ++n )
{
  // do stuff
}

printf("Did %d stuffs", n);

يعمل هذا الرمز في VC6 ولكنه لن يعمل في VC9.إنه في الواقع برنامج مشوه - حقيقة أن VC6 يسمح به يعد عيبًا في VC6.

إن قرار النقل من VC6 إلى VC9 ليس قرارًا حاسمًا.عليك أن تفكر في مدى صعوبة المشروع وموازنة ذلك مع أي مكاسب تحصل عليها وأي مشاكل تتجنبها.

يجب عليك مراجعة قوائم Microsoft الخاصة بالتغييرات العاجلة عند تحديد ما إذا كان سيتم تنفيذ هذا المشروع وكيفية تنفيذه.القائمة الأولى، التي تفصل التغييرات من VC6 إلى VC7، هي قائمة ضخمة.والبعض الآخر أصغر بكثير بالمقارنة.مما يشير إلى أنه إذا قمت بالنقل من VC6 إلى أي شيء، فيجب أن يكون عام 2005 على الأقل.

نصائح أخرى

وكيف كبيرة من رمز قاعدة تتحدث؟

وترقية برنامج صغير (التي هي في معظمها غير قالب C ++ كود) يجب أن تكون تافهة إلى حد ما.

ولكن كان لي مرة واحدة لتحويل 100.000 أسطر من التعليمات البرمجية باستخدام قالب من VC6 إلى VC2005، وكان الأسبوع كابوس (5 أيام عمل)، وكانت المشكلة الرئيسية التي كان لي لإصلاح باليد حوالي 30٪ من المشاكل (70٪ كانت تافهة إلى حد ما ويمكن اصلاحها مع بحث واستبدال). ولكن أكثر من قضية هو حقيقة أن القانون القديم لم يكن حالات الاختبار وجود إطار اختبار، وذلك حتى بعد أن حصلت على تطبيق لتجميع وليس segfault، وتبدو طيب (؟)، لم يكن لدي أي شيء لضمان أنها تعمل فعلا كما كان من المفترض أن يكون.

وهكذا في الواقع نصيحتي للنظر في حجم الرمز، وتوفر الاختبارات، وكذلك النظر إذا كان رمز يحتاج حقا إلى أن يكون ميناء (في حالتي كان ذلك نعم، ولكن ليس هو الحال دائما، وخاصة إذا كان سيتم تلاشى البرنامج قريبا)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top