الكلمة الأساسية الثابتة في معلمة الوظيفة
-
20-09-2019 - |
سؤال
لقد وجدت للتو تعريف الوظيفة هذا في بعض التعليمات البرمجية المدمجة:
float round_float_to_4(static float inputval);
أنا على دراية بالاستخدامات الأخرى ل ثابتة (المتغيرات العالمية والوظائف والمتغيرات المحلية) ، ولكن هذه هي المرة الأولى التي أراها محددة لمعلمة الوظيفة. أفترض أن هذا المجمع يجبر على استخدام موقع الذاكرة الثابت inputval بدلا من المكدس؟
المحلول
هذا غير قياسي. أعتقد أن نفس الشيء مثلك ، وأنا لست مندهشًا من هذا التمديد في المترجمين الذين لديهم هدف مضمن.
نصائح أخرى
هذا غير صالح. المكان الوحيد الصحيح حيث static
يمكن استخدام
float round_float_to_4(float inputval[static 4]);
قول ذلك inputval
سوف تشير ، في جميع المكالمات إلى هذه الوظيفة ، إلى توفير الذاكرة على الأقل 4
العوامات (هذه إضافة C99 ، لا تظهر في C89).
وفقًا لمعيار C ،
المحدد الوحيد من فئة التخزين الذي يجب أن يحدث في إعلان المعلمة هو التسجيل.
تحتوي العديد من الأجهزة المدمجة على مكدس محدود بشكل خطير ، فإن هذه الميزة ستكون ذات فائدة كبيرة في تقليل فرص التدفق ، مع الاستمرار في منحك الفرصة لرمز المشارك.
لا تملك الرقائق الأصغر أي فرصة لوضع المتغيرات على المكدس ، لذلك جميع المعلمات هي مواقع ذاكرة ضمنية.