با سلام.
در زبان سی و همچنین کتابخانه های نوشته شده برای میکروکنترلر های STM32 تکنیکی به کار میره با عنوان های مختلف که بنده کاربردش رو دقیقا درک نکردم چی هست.
توی زبان سی با عبارت ()assert نوشته میشه و در یکی از کتابخونه های STM32آ به صورت زیر تعریف شده:
ماکرو نوشته شده در بالا کارش این هست: عبارت یا expr رو بررسی میکنه اگه از نظر منطقی صحیح بود عبارت هیچی یا (void)0 رو بر میگردونه در غیر این صورت یه تابع تعریف میکنه و شماره فایل و آدرس خط رو بهش ارسال میکنه. همونجا هم این تابع رو تعریف کرده که عملکرد خاصی رو براش تعریف نکرده.
البته ماکرو رو به دو صورت تعریف کرده یکی در حالت full و دیگری معمولی. در حالت معمولی هیچ کاری انجام نمیده فقط اگه شرط صحیح بود مقدار هیچی رو برمیگردونه و اگه نبود هم چیزی براش تعریف نشده.
این ماکرو که در حقیقت دستور پیش پردازنده هست چه کمکی به برنامه نویس میکنه که اینقدر فراگیر ازش استفاده شده؟
با سپاس
در زبان سی و همچنین کتابخانه های نوشته شده برای میکروکنترلر های STM32 تکنیکی به کار میره با عنوان های مختلف که بنده کاربردش رو دقیقا درک نکردم چی هست.
توی زبان سی با عبارت ()assert نوشته میشه و در یکی از کتابخونه های STM32آ به صورت زیر تعریف شده:
کد:
/* #define USE_FULL_ASSERT 1 */ /* Exported macro ------------------------------------------------------------*/ #ifdef USE_FULL_ASSERT /** * @brief The assert_param macro is used for function's parameters check. * @param expr: If expr is false, it calls assert_failed function * which reports the name of the source file and the source * line number of the call that failed. * If expr is true, it returns no value. * @retval None */ #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */ void assert_failed(uint8_t* file, uint32_t line); #else #define assert_param(expr) ((void)0) #endif /* USE_FULL_ASSERT */
ماکرو نوشته شده در بالا کارش این هست: عبارت یا expr رو بررسی میکنه اگه از نظر منطقی صحیح بود عبارت هیچی یا (void)0 رو بر میگردونه در غیر این صورت یه تابع تعریف میکنه و شماره فایل و آدرس خط رو بهش ارسال میکنه. همونجا هم این تابع رو تعریف کرده که عملکرد خاصی رو براش تعریف نکرده.
البته ماکرو رو به دو صورت تعریف کرده یکی در حالت full و دیگری معمولی. در حالت معمولی هیچ کاری انجام نمیده فقط اگه شرط صحیح بود مقدار هیچی رو برمیگردونه و اگه نبود هم چیزی براش تعریف نشده.
این ماکرو که در حقیقت دستور پیش پردازنده هست چه کمکی به برنامه نویس میکنه که اینقدر فراگیر ازش استفاده شده؟
با سپاس
دیدگاه