انتقل إلى المحتوى

تعريفات ماكرو المستخدمة بشكل شائع في لغة البرمجة C مع STM32

في مجال تطوير الأنظمة المضمنة، هناك بعض تعريفات الماكرو الشائعة التي يمكن أن تزيد من توافق المشروع وقابليته للنقل بين الأنظمة المختلفة.

منع تكرار تضمين الملف الرأسي

#ifndef COMDEF_H
#define COMDEF_H

// محتوى الملف الرأسي

#endif

تعريفات الأنواع المخصصة

قم بتعريف بعض الأنواع المخصصة لمنع اختلاف عدد بايت الأنواع بسبب اختلاف المنصات والمترجمات. وهذا يسهل أيضًا عملية النقل بين المنصات المختلفة.

typedef unsigned char boolean; /* نوع القيم البوليانية */
typedef unsigned long int uint32; /* قيمة بدون علامة بعرض 32 بت */
typedef unsigned short uint16; /* قيمة بدون علامة بعرض 16 بت */
typedef unsigned char uint8; /* قيمة بدون علامة بعرض 8 بت */
typedef signed long int int32; /* قيمة مع علامة بعرض 32 بت */
typedef signed short int16; /* قيمة مع علامة بعرض 16 بت */
typedef signed char int8; /* قيمة مع علامة بعرض 8 بت */

الحصول على كلمة أو بايت من عنوان معين

#define MEM_B( x ) ( *( (byte *) (x) ) )
#define MEM_W( x ) ( *( (word *) (x) ) )

الحصول على الحد الأقصى / الحد الأدنى

#define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
#define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )

العودة بعدد العناصر في مصفوفة

#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )

تحويل الحرف الأول إلى حروف كبيرة

#define UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )

التحقق مما إذا كان الحرف عشريًا

#define DECCHK( c ) ((c) >= '0' && (c) <= '9')

التحقق مما إذا كان الحرف ست عشريًا

#define HEXCHK( c ) ( ((c) >= '0' && (c) <= '9') ||\
((c) >= 'A' && (c) <= 'F') ||\
((c) >= 'a' && (c) <= 'f') )

المراجعة والشكر

عنوان النص: https://wiki-power.com/ يتم حماية هذا المقال بموجب اتفاقية CC BY-NC-SA 4.0، يُرجى ذكر المصدر عند إعادة النشر.

تمت ترجمة هذه المشاركة باستخدام ChatGPT، يرجى تزويدنا بتعليقاتكم إذا كانت هناك أي حذف أو إهمال.