1、使用宏定义
功能:定义常量、定义宏函数、条件编译等。
优点是:是一种很好的替代函数的方式,增加代码的可读性和简洁性
示例:
2、关键字register
功能:修饰一个寄存器变量。
优点:使用频率特别特别高的数据,存在寄存器中,可以提高效率。
示例:
对比看int i; 和register int i;的运行时间
3、关键字volatile
功能:用来修饰会被不同线程访问和修改的变量。
作用:确保编译器不会对变量进行优化,保持内存的可见性。
4、位操作
功能:位与& 位或| 异或^ 取反~ 左移<< 右移>> 针对二进制
作用:充分利用位操作,可以节省内存和提高效率。
示例:
5、自定义轻量级函数
作用:使用自定义的轻量级函数来替代标准库函数,可以节省资源。
示例:
6、内存管理
作用:嵌入式的内存使用很关键。在使用malloc()函数进行动态内存分配的时候,使用结束后注意使用free()函数进行内存释放,避免内存碎片问题。
示例:
7、中断处理实时事件
示例:
8、防止整型溢出
为了防止整型溢出,可以使用适当的数据类型和边界检查来确保数值的正确性。
9、优化编译选项
对代码进行优化,提高代码执行的效率。
示例:
编译指令:gcc -O2 example.c -o example
优化后的代码可能会有这些改变:
①循环展开:多个迭代合并为一个,以减少循环开销和分支预测。
②内联函数:减少函数调用开销。
③消除无用代码,减少不必要的计算和内存访问。
④优化寄存器使用,以减少内存读写,提高访问速度。
⑤常量折叠:在编译时计算常量表达式的值,并将结果直接替换成常量值。
10、函数指针数组
本质是一个数组,存储的元素都是函数指针。
语法格式: 数据类型 (*数组名[长度])(参数);
作用:转移表【C语言转移表(Jump Table)是一种优化技术,可以用来代替一系列的if-else语句或switch语句,从而提高代码的执行效率。】