断言怎么用?
int fun(int *arr, char i) {
return arr[i];
}
int main(void) {
int arr[5] = {0xa1, 0xb2, 0xc3, 0xd4, 0xe5};
int a = fun(arr, 8);
return 0;
}
这样的代码有内存溢出风险
如何使用断言来避免呢?
#include <stdio.h>
#define assert(e) if(e>4) \
{printf("parameter illegal");return -1;}
int fun(int *arr, char i) {
assert(i)
return arr[i];
}
int main(void) {
int arr[5] = {0xa1, 0xb2, 0xc3, 0xd4, 0xe5};
int a = fun(arr, 8);
return 0;
}
HAL库对断言的运用
在STM3210FX_confg.h文件中可以找到断言
判断GPIO合法性
使用断言 可以保证内存使用安全性,但也增加了代码体积
printf怎么玩呢?
printf调用putc函数
输出到串口
输出到液晶
多路串口格式化输出
printf不定形参原理解析与日志打印方案
理论上没有,实际上收到栈的大小的