c语言宏

    xiaoxiao2022-07-13  166

    左移1

    #define _BV(PIN) (1UL << PIN)

    置位与清位

    #define SBI(n,b) (n |= _BV(b)) //n的第b位置1 #define CBI(n,b) (n &= ~_BV(b)) //n的第b位清0

    限制值

    #define NOLESS(v,n) do{ if (v < n) v = n; }while(0) #define NOMORE(v,n) do{ if (v > n) v = n; }while(0)

    条件测试

    #define _CAT(a, ...) a ## __VA_ARGS__ #define SWITCH_ENABLED_ 1 #define ENABLED(b) _CAT(SWITCH_ENABLED_, b) #define DISABLED(b) (!_CAT(SWITCH_ENABLED_, b)) #if ENABLED(SD) //如果#define SD 此时为#if 1

    数字与字符

    #define WITHIN(V,L,H) ((V) >= (L) && (V) <= (H)) #define NUMERIC(a) WITHIN(a, '0', '9') #define DECIMAL(a) (NUMERIC(a) || a == '.') #define COUNT(a) (sizeof(a)/sizeof(*a)) #define ZERO(a) memset(a,0,sizeof(a)) #define COPY(a,b) memcpy(a,b,min(sizeof(a),sizeof(b)))
    最新回复(0)