Part Number:TMS320F2800157
如下定义了一个GetBoardWorkingFlag()函数,它是inline类型的
然后在某个地方调用这个函数
因为它是inline函数,所以这个函数编译之后应该不存在,在调用的地方会被展开(类似于宏定义的效果),
而且我看可编译之后的.map文件,也确实找不到这个函数
但是在调用这个函数的地方,汇编指令会是LCR(函数跳转指令)
static inline bool GetBoardWorkingFlag()
{
return (boardStatus_WorkingNormal == boardStatus);
}
bool boardWorkingFlag = GetBoardWorkingFlag();
0094b3: 7640919E LCR GetBoardWorkingFlag —- GetBoardWorkingFlag()是inline类型的,在调用的地方应该是被展开,没有调用,为什么这里还是有函数跳转指令
0094b5: 9645 MOV *-SP[5], AL
Yale Li:
我已经咨询了相关工程师,请关注下方链接:
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1312913/tms320f2800157-compilation-of-inline-functions
,
John Pan:
搞定了,要打开下面的编译优化选项