为什么MISRA建议使用static存储类声明内联函数?虽然关键字inline是编译器用实际的函数体替换所有函数调用的提示,编译器可能会也可能不会执行它,但向函数提供内部链接(static)或外部链接(extern)会如何影响编译器的内联操作?
static
inline
extern
t3psigkw1#
MISRA C:2012给出了规则8.10的理由:理由如果一个内联函数是用外部链接声明的,但没有在同一个转换单元中定义,则其行为是未定义的。对使用外部链接声明的内联函数的调用可以调用该函数的外部定义,也可以使用内联定义。虽然这不应该影响被调用函数的行为,但它可能会影响执行时间,从而对实时程序产生影响。
1条答案
按热度按时间t3psigkw1#
MISRA C:2012给出了规则8.10的理由:
理由
如果一个内联函数是用外部链接声明的,但没有在同一个转换单元中定义,则其行为是未定义的。
对使用外部链接声明的内联函数的调用可以调用该函数的外部定义,也可以使用内联定义。虽然这不应该影响被调用函数的行为,但它可能会影响执行时间,从而对实时程序产生影响。