c++ سبب تحسين#pragma(""، إيقاف التشغيل)




visual-studio mfc (4)

أنا أراجع مشروع مفك C ++. في بداية بعض الملفات هناك هذا الخط:

#pragma optimize("", off)

أحصل على أن هذا يتحول الأمثل قبالة لجميع الوظائف التالية. ولكن ماذا سيكون الدافع عادة للقيام بذلك؟


لقد استخدمت هذا حصرا للحصول على أفضل تصحيح المعلومات في مجموعة معينة من التعليمات البرمجية مع بقية التطبيق يتم تجميع مع التحسين على. هذا مفيد جدا عند تشغيل مع كامل التصحيح بناء مستحيل بسبب متطلبات الأداء من التطبيق الخاص بك.


لقد رأيت رمز الإنتاج الذي هو الصحيح ولكن معقدة جدا أنه يخلط المثبت في إنتاج الناتج غير صحيح. قد يكون هذا هو السبب في إيقاف عمليات التحسين.

ومع ذلك، أود أن أعتبر أنه من المرجح أكثر بكثير أن رمز هو ببساطة عربات التي تجرها الدواب، وجود سلوك غير معروف. يعرض المثبت ذلك ويؤدي إلى سلوك وقت تشغيل غير صحيح أو تعطل. وبدون التحسينات، يحدث الرمز "للعمل". وبدلا من العثور على وإزالة المشكلة الأساسية، شخص "الثابتة" من خلال تعطيل التحسينات وترك ذلك في ذلك.

وبطبيعة الحال، هذا هو حول كما هش ويمكن الحلول. الأجهزة الجديدة، أوس التصحيح الجديد، جديد مترجم التصحيح، أي من هذه يمكن كسر مثل هذا "الإصلاح".

حتى لو كان براغما هناك للسبب الأول، فإنه ينبغي توثيقها بشكل كبير.


وأنا أعلم أن هذا موضوع قديم، ولكن أود أن أضيف أن هناك سببا آخر لاستخدام هذا التوجيه - وإن لم تكن ذات صلة لمعظم مطوري التطبيقات.

عند كتابة برامج تشغيل الأجهزة أو رمز آخر منخفض المستوى، ينتج المحسن أحيانا مخرجا لا يتفاعل مع الأجهزة بشكل صحيح.

على سبيل المثال التعليمات البرمجية التي تحتاج إلى قراءة سجل الذاكرة التي تم تعيينها (ولكن لا تستخدم قيمة قراءة) لمسح المقاطعة قد يكون الأمثل من قبل مترجم، إنتاج رمز التجمع الذي لا يعمل.

وقد یوضح ذلك أیضا السبب في أن استخدام ھذا التوجیھ یجب توثیقھ بوضوح (کملاحظة أنجو).


سبب آخر بديل لهذه لتكون في قاعدة رمز ... حادث.

هذا هو أداة مفيدة جدا لإيقاف محسن على ملف معين في حين التصحيح - كما راي المذكورة أعلاه.

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





mfc