嵌入式开发中使用C语言的常见误区
因此在单片机上以下功能能不用尽量不用:
动态变量的申请和释放:malloc 和free:空间不够时,少量的可以重复使用一些变量空间;大量的可改用固定数组自己重复使用这些空间就可以了。除非能预见可能出现的所有情况,否则频繁申请空间和释放,系统一定会崩溃!和字符串相关的函数,包含printf,sprintf等,因为C语言字符串处理使用了动态内存,而且资源不足,对于你少量的格式转换,自己写个程序来实现,这样连接时就不会把这部分代码连接到目标代码中,既可以使代码短小运行速度快,也可以避免一些错误,当有问题时也容易查错。还有并非所以C编译器都支持这些函数,有时需要自己写点东西,如stdin stdout stderr(在avr 和stm32中都要自己重定向这三个函数);不用这些函数,你源代码的可移植性就增强了。少用浮点运算;浮点运算得不多,如果需要在输出的时间涉及小数,可以输出时转换一下,只要哪怕有一处使用浮点数,连接时就要连接整个浮点运输库,代码增大很多。慎用迭代算法,这通常出现在排序算法中,还有运行时计算表达式,这对于单片机来说堆栈很小,一不留神就出界了。少用函数指针。这类高级的应用是C语言的特色,但这类应用中要是还包括传递参数,甚至不同类型的参数,要是有错很难查。对初学者,少用指针变量,因为一不小心指向的就不是你想要的空间了。
#学习路径#