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

by | 19 مرداد, 1402 | برنامه نویسی میکرو, میکروآموزش | 0 comments

عملگرهای رابطه‌ای برای اشاره‌گرها در استاندارد 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

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

رضا اسدی

رضا اسدی

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

جدیدترین های میکروآموزش

فرق آماتور و حرفه‌ای در الکترونیک

فرق آماتور و حرفه‌ای در الکترونیک

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

علت سوختن برد الکترونیکی

علت سوختن برد الکترونیکی چیست؟

علت سوختن برد الکترونیکی چیست؟ در این میکروآموزش، با مقایسه طراحی معماری و برد الکترونیکی، مفهوم طراحی پایدار را بررسی می‌کنیم.

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD یکی از مراحل کلیدی در فرآیند تولید برد است. این آموزش اهمیت این مرحله و دقت مورد نیاز را بررسی می‌کند.

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB مفهومی کلیدی برای عملکرد بی‌نویز است. این آموزش با نگاهی الهام‌گرفته از معماری ایرانی، اهمیت آن را بررسی می‌کند.

0 Comments

Submit a Comment

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

آموزش های یوبرد

آموزش TFT LCD با TouchGFX و STM32 یوبرد

گرافیک کاربرپسند با میکروکنترلر ST

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

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

شاهکار 8 بیتی Atmel

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

یادگار فیلیپس

دانلود

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

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