|
发表于 2014-6-23 15:09:40
|
显示全部楼层
传授你一招不外传的无节操小技巧。
自己封装一个String类型,哪还要搞什么字符串转数组这么浪费时间又无意义的东西。
- typedef struct
- {
- char* charArr;
- int16_t len;
- }StringStruct;
- #define String(n,m) \
- StringStruct n={m,sizeof(m)}
复制代码
除了C库内置的printf以外,一般我们从串口传数据都是自己写的发送函数,讲真,就是printf也是非常没节操的,封装的操作太多确实大而全,但是为了很多我们用不上的功能去花这个代价不划算。
更重要一点,运行时间太长,放在中断里面会比较蛋疼。所以我们都自己写。
自己写的时候,用上我上面那个String类型就爽啦~
为什么呢,因为除了基础的字符数组以外,我连长度一起带了,对于有buffer或者开DMA发数据的方式,这种办法更简单。
更重要的是,从一开始就把字符串的长度封装进去了以后,可以为所有的处理函数提供一个统一的接口。以后需要其他功能,也可以通过继续添加新的字段来实现。
- String(Name,"Name is what?");
- /*MyPrint(StringStruct string) 等同于:print(char* charArr,int16_t len)*/
- MyPrint(Name);=>print(Name.charArr,Name.len);
复制代码 |
|