TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F2800157: inline函数的编译

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:

搞定了,要打开下面的编译优化选项

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2800157: inline函数的编译
分享到: 更多 (0)