内联函数多用于提高程序运行速度,牺牲空间换时间,这也和硬件FPGA的规律一致。不过在IAR IDE下使用inline 定义的函数很多时候不会如程序设计者所愿的内联到代码中,会仍旧以函数调用的形式存在。
inline关键词本身就是推荐编译器进行内联,不过编译器不接受推荐,那么自然就没用了。IAR IDE在采用默认设置时是不接受inline建议的,想让其按照程序设计者的意愿内联函数的话,需要在优化选项中进行设置。
设置选项在:Options->C/C++ Compiler->Optimizations。
只有把优化等级开到High才能在右边的Enable复选框中选择Function inlining。选择这两个之后inline定义的函数就可以正常的在汇编代码中结合在一起,不过因为是开了优化,有些并没有inline定义的函数也会被内联。不过编译器的智能程度还是比较喜人的,目前没发现什么特别差的优化结果。
Enable复选框中有很多具体的选项,分别根据实际的优化需要灵活选择,就算把所有的复选框都取消,其仍然会优化代码,相比于None优化,效果还是很明显的。关于说使用优化导致的程序不正常,很多情况是优化过后速度更快了,使得时序不满足,记得使用volatile。