سؤال

أعلم أن المترجم قد يؤدي أو لا يؤدي إلى التوسع المضمّن لوظيفة ما إذا كان المبرمج يطلبه المبرمج أم لا.
كنت فضوليًا فقط لمعرفة ، هل هناك أي طريقة يمكن للمبرمج أن يعرفها على وجه اليقين أن برنامج التحويل البرمجي قد حدد وظيفة معينة؟

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

المحلول

بخلاف النظر في الكود الذي تم إنشاؤه ، لا. قد توفر بعض التطبيقات تلك المعلومات ولكنها غير مطلوبة وفقًا للمعيار.

اشياء مثل inline أو register (ارتعاش) اقتراحات إلى المترجم وهو حر في قبولهم ، وتجاهلهم أو حتى يكذب عليك أن تفعل ذلك أثناء الذهاب سرا وراء ظهرك وعدم القيام بذلك :-)

لا أميل إلى استخدام ميزات من هذا القبيل لأنني أظن أن المترجم غالبًا ما يعرف أفضل مما أفعله في كيفية إخراج معظم الأداء من الكود الخاص بي.

نصائح أخرى

يمكنك ملف تعريف الكود الخاص بك ومعرفة ما إذا كانت وظيفة الاهتمام تظهر في مكدس الاتصال. على الرغم من أنني أفترض أنه لا يوجد ضمان إذا لم يكن معدل أخذ العينات المكدس مرتفعًا بدرجة كافية.

ولكن قد يثبت أنه مضمّن: إذا كنت تعرف A المكالمات B, الذي يدعو C, ، و A لا تتصل أبدا C مباشرة ، إذا رأيت A الدعوة C على مكدس المكالمات ، كما تعلمون B كان مضمّنًا لتلك المكالمة.

اضبط المترجم الخاص بك لإنشاء رمز التجميع وتحقق من هناك.

اقرأ تفكيك ملف الكائن.

لا توجد وسيلة لمعرفة ما عدا النظر إلى مجموعة الإخراج.

المجمعون في هذه الأيام "ذكي" ويقررون الوظائف التي يجب مضمنة وفي أي حالات.

تمامًا مثل الكلمة الرئيسية للتسجيل ، يقوم المجمعون بالاختيار هذه الأيام ويتجاهلون طلباتك حقًا.

لا أعتقد أن هناك طريقة لمعرفة ما تريد ،

ولكن يمكنك زيادة إمكانات الوظيفة كونها وظيفة مضمنة من خلال ،

جعل تعريف الوظيفة مرئية لوحدة الترجمة التي يطلق عليها. أي عليك دائمًا وضع تعريف دالة مضمّنة في ملف الرأس.

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