خواندن متغیر قبل از مقداردهی به آن در استاندارد MISRA C++

توسط | 29 مرداد, 1402 | برنامه نویسی میکرو, میکروآموزش | 0 دیدگاه

خواندن متغیر قبل از مقداردهی به آن در استاندارد MISRA C++

اخبار جدید یوبرد در اینستاگرام

خواندن متغیر قبل از مقداردهی به آن در استاندارد MISRA C++، ممنوع شده است. متن قانون 8-5-1 یک قانون الزامی از استاندارد MISRA C++ در ادامه ارائه شده است:

All variables shall have a defined value before they are used.

همۀ متغیرها قبل از استفاده باید مقدار مشخصی داشته باشند.

این قانون صراحتا بیان می کند که باید قبل از اینکه آرایه ها خوانده شوند، یک مقداری در آنها نوشته شود. همچنین این استاندارد در ادامه بیان می کند که این نوشتن مقدار قبل از خواندن آرایه ها، لزوما نباید در مقدار دهی اولیه صورت بگیرد.

در ادامه به چند نکتۀ دیگر مرتبط با این موضوع توجه کنید:

  • طبق [1]3002:28841 CEI/OSI، متغیر با مدت زمان ذخیرۀ استاتیک، اگر مقداردهی اولیه نشود، به طور خودکار صفر می‌شود. در عمل، بسیاری از محیط‌های امبدد این کار را نمی‌کنند.
  • متغیر با مدت زمان ذخیرۀ اتوماتیک هم معمولاً به طور خودکار مقداردهی اولیه نمی‌شود.
  • سازنده‌های کلاس هم باید همۀ اعضای غیر ثابت کلاس را مقداردهی اولیه کنند.

به عنوان مثال به موارد زیر توجه کنید:

class c

{

public:

c() : m_a(10), m_b(7) //Compliant

{

}

 

c(int32_t a) : m_a(a) //Non-Compliant

{

}

 

int32_t GetmB (void)

{

return (m_b);

}

 

private:

int32_t m_a;

int32_t m_b;

};

 

C c(5);

 

int main (void)

{

if (c.GetmB() > 0) //m_b has not been initialized

{

}

}

استاندارد های MISRA C و MISRA C++، مجموعه دستوالعمل های استفاده از زبان های C و C++ در سیستم های حیاتی هستند. این استانداردها در ابتدا در صنعت خودروسازی شکل گرفته و سپس در صنایع دیگر نیز مورد استفاده قرار گرفتند. امروزه باید تمامی فعالان در زمینۀ طراحی سیستم های حیاتی به زبان C و C++ به این استانداردها مشرف باشند. باتوجه به اهمیت این استانداردها، آموزش استاندارد MISRA C و همچنین آموزش استاندارد MISRA C++ در یوبرد ارائه شده است.

لینک های مرتبط در میکروآموزش یوبرد:

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین های برنامه نویسی در وبلاگ و میکروآموزش

غیر حرفه ای ترین روش کدنویسی

غیرحرفه ای ترین روش کدنویسی

غیر حرفه ای ترین روش در کدنویسی، استفاده از تاخیری است که کل سیستم را منتظر می گذارد.

پیچیدگی نرم افزار

پیچیدگی نرم افزار

پیچیدگی نرم افزار (software complexity) در یک محصول از پیچیدگی عملکرد کدهای آن (رابط های سیستمی متعدد و الزامات پیچیده) سرچشمه می گیرد.

لزوم کد تست برای سخت افزار

لزوم کد تست برای سخت افزار

لزوم کد تست برای سخت افزار، به تسهیل فرایند توسعه برمیگردد.

آرایه با کلاس حافظۀ خارجی

آرایه با کلاس حافظۀ خارجی

آرایه با کلاس حافظۀ خارجی (در زمانی که آرایه با extern اعلان شود.)، در استاندارد MISRA C الزاماتی دارد.

پیش ثبت نام تا به حد نصاب رسیدن کلاس خصوصی 3 نفرۀ آموزش STM32

0 دیدگاه

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است