C语言:编程总结

目录

使用结构体创建索引

定义一个数组所占字节数

((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);*/
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值