1. %#X
c语言中符合%#的意思是带格式输出。
比如,%#x的意思是在输出前面加上0x,%#b的意思是在输出前面加上0b。
2. %-6.2f
其中6这个正整数指定要输出数字的整体长度包括小数点为 6 位,保留 2 位小数,
不足则以空格补齐,对齐方式为右对齐(%-6.2f 则表示左对齐)。
当实际长度大于格式定义的位数时,如 254227.37855 以实际为准,因此输出是 254227.37;
%f 代表按float类型输出。
%lf代表按double类型输出。
3 break continue
break 在循环中的作用是 跳出一个循环或者结束一个循环 ,循环体结束
continue 立即结束本次循环,继续执行下一次循环,循环体不结束
4 函数名宏定义
在查看EtherCAT官方协议栈时,发现一函数 void Sync0Isr(void),该函数能够执行,但没有任何地方调用。
后又发现一宏定义 #define Sync0Isr EXTI_IRQHandler
因此此处是将中断函数更名而已,这样做是为了移植的时候更方便,也是写协议栈必备的技能点。
5 atoi
此函数为将字符串转换为int型库函数,但是需要注意,该函数只适用于十进制,比如“1234”字符串转换为int型1234,
但是"0x1234"字符串,是不会转换为0x1234整形的,只会返回0 ,如果需要转换16进制字符串, 可以使用如下函数
可以使用 strtol:
char s[]="0xA";
int i;
i = strtol(s, NULL, 16);
printf("%d", i);