目录
((unsigned char volatile code *) 0) 解析
使用结构体创建索引
//创建结构体
typedef struct{
char *name;
char *ptr;
}Index;
//声明结构体变量 gloale
Index gloale[] =
{
//image_jpg_start:即要搜索的名字,
//asm("_binary_image_jpg_start"):即要搜索的内容
{"image_jpg_start", asm("_binary_image_jpg_start")},
//{},
//{},
};
void main(void)
{
if( strcmp("image_jpg_start", gloale[i].name) == 0)
{
ptr = gloale[i].ptr;
}
}
定义一个数组所占字节数
const uint8_t example_buffer[]={"array length"};
#define SIZE sizeof(example_buffer) //数组长度
//知识扩展:sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
((unsigned char volatile code *) 0) 解析
#define CBYTE ((unsigned char volatile code *) 0)
考虑下这个define定义的内容
1)、把CBYTE定义成一个0(0);
2)、这个0是个地址(*号);
3)、这个地址是代码段的地址(code);
4)、并是unsigned char类型的地址(unsigned char);
5)、并这个地址的内容是易逝性的(volatile);
举例:读取地址为0x02的值。
unsigned char value;
value = CBYTE[0x02]; // value = *(CBYTE+0x02);
变量应该赋初值
在程序中定义的局部变量、全局变量都应该赋初值,如定义了一个局部变量,是作为条件判断的变量,由于没有赋初值,第一次执行判断时有可能出现很多种情况。
预定义中 ## 的使用
##作为连接作用
#define PWM_Open(pn) \
{\
/*pn:pwm编号,只能是数字0-4*/\
PWM_##pn##_CFG |= BIT(6);\
}
void mian(void)
{
PWM_Open(2);/*其结果相当于 PWM_2_CFG |= BIT(6);*/
}