عملگرهای رابطه‌ای برای اشاره‌گرها در استاندارد MISRA C++

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

عملگرهای رابطه‌ای برای اشاره‌گرها در استاندارد MISRA C++

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

 

عملگرهای رابطه‌ای برای اشاره‌گرها در استاندارد MISRA C++، ممنون شده است. این یک قانون الزامی به شمارۀ 5-0-18 در استاندارد MISRA C++ است. متن این الزام در این استاندارد بصورت زیر است:

>, >=, <, <= shall not be applied to objects of pointer type, except where they point to the same array.

ترجمه: عملگرهای <، =<، > و => نباید برای اشاره‌گرها اعمال شوند، مگر در مواردی که اشاره‌گرها به یک آرایۀ یکسان اشاره می‌کنند.

اگر دو اشاره‌گر به شیء یکسانی اشاره نکنند، مقایسه بین آنها، رفتار نامشخص ایجاد می‌کند. کدنویسان سیستم های حیاتی باید تمام رفتارهایی که باعث ایجاد رفتارهای نامشخص می شود را بشناسند. چرا که این رفتارهای نامشخص برخی اوقات حتی در تولید انبوه مشخص می شود. به عنوان مثال به کدهای زیر توجه کنید:

void f1 ()

{

int32_t a1[10];

int32_t a2[10];

int32_t *p1 = a1;

 

if (p1 < a1) // compliant

{

}

 

if (p1 < a2) // Non-compliant

{

}

}

از کدهای فوق متوجه می شویم که عملگرهای فوق را برای اشاره گر فقط زمانی می توانیم بکار ببریم که طرف دیگر عملگر، عملوندی باشد که اشاره گر به آن اشاره کرده است. در مثال فوق شرط if اول مشکلی ندارد اما شرط if دوم مطابق این قانون پذیرفتنی نیست.

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

درمورد مقایسۀ بین انواع float نیز چنین محدودیتی وجود دارد که در میکروآموزش مقایسۀ برابری انواع float در استاندارد MISRA C

رضا اسدی

رضا اسدی

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 دیدگاه

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

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

دانلود

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

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