يمكن مضمنة الهيئات وظيفة في الكيانات إشارة C أعلن في وقت لاحق

StackOverflow https://stackoverflow.com/questions/1817950

  •  10-07-2019
  •  | 
  •  

سؤال

ودعونا نقول لدي اثنين من وظائف مضمنة في ملف الرأس بلدي:

inline int foo() { return bar()+2; }
inline int bar() { return 3; }

ويمكن أن أفترض أن مترجم C99 سوف المضمنة "فو" حتى إذا أعلن "بار" في وقت لاحق؟ على افتراض أن أي قاعدة داخلية أخرى مثل وظيفة الجسم إلى كبيرة يتم تشغيل.

هل تطبيقات المجمعين ج القيام بذلك (تلك الشعبية تقول إنتل-C / صن استوديو / MSVC ودول مجلس التعاون الخليجي) حتى لو C99 ترك هذا كخيار؟

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

المحلول

وطالما هي نموذج أولي ليعمل بشكل صحيح، فإنه لن يهم ما لكي تقوم بتعريف لهم بالدخول.

نصائح أخرى

وinline هو مجرد تلميح إلى مترجم، وأكثر الأحيان هو تجاهله في المجمعين الأمثل الحديثة. لا يمكنك تحمل أي شيء حول ما إذا كان شيء ما يحصل inlined أم لا. توفر بعض المجمعين pragmas التي تجبر وظيفة معينة إلى أن inlined إذا كان ذلك ممكنا (مثل MSVC __forceinline). إذا كنت بحاجة للغاية أن نعرف، لا بد من النظر في تفكيك الإخراج.

وقال ذلك، لقصاصة معينة، أي مترجم الأمثل لائق سوف مضمنة، مع أو بدون inline، طالما انها رأس واحد.

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