cc开发宝典(封装函数)
1 获取一个字的高位和低位字节#define VALUE_L(x) ((byte) ((word)(x) & 255)) #define VALUE_H(x) ((byte) ((word)(x) >> 8))程序断言:用来调试代码是否满足条件#define FILE_ASSERT(term) do { if (!(term)) { printf("Assert failed. Condition(%s). [%s][%d]r ", term, __FUNCTION__, __LINE__); while(1) { ; } } } while (0)获取指定地址上的一个字节或字#define SITE_B( x ) ( *( (byte *) (x) ) ) #define SITE _W( x ) ( *( (word *) (x) ) )计算最大值和最小值#define LV_MAX( x, y ) ( ((x) > (y)) ? (x) : (y) ) #define LV_MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )将一个字母转换为大写#define CAPITAL( c ) ( ((c) >= "a" && (c) <= "z") ? ((c) - 0x20) : (c) )获取数组元素的个数#define MY_SIZE( x ) ( sizeof( (x) ) / sizeof( (x[0]) ) )二进制字符串转换为十进制整数/** * @brief 二进制字符串转换为十进制整数 * @param str:待反转的字符串 * @retval 反转字符串 */ static void lv_atk_bit_str_reverse(char str[]) { int n=strlen(str); int i; char temp; for (i = 0;i < (n/2); i++) { temp = str[i]; str[i] = str[n-i-1]; str[n-i-1] = temp; } }八进制转十进制/** * @brief 八进制转十进制 * @param n:八进制的数值 * @retval 返回十进制 */ long lv_atk_oct_to_dex(long n) { int i=0,tmp,sum=0; while(n) { tmp=n%10; n=n/10; sum+=tmp*pow(8,i); i++; } printf("%d",sum); return sum; }从一个结构的成员指针找到其容器的指针#define os_container_of(ptr, type, member) ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member)))程序定位断言#define ASSERT(condition) do { if(!(condition)) { printf("Assert Failed, condition(%s).[%s][%d]r ", # condition,__FUNCTION__,__LINE__); while(1); } while(0);