以下简化example.c
文件做cc -std=c99 example.c
:如何在C99中正确内联和使用内联函数? (构建失败)
inline void a()
{
}
int main()
{
a();
return 0;
}
打动了我:
在函数'主:
example.c :(文字+ 0x7的):未定义的参考 'A'
collect2:LD返回1个退出状态
据我了解这必须处理C99标准的要求,以便在每个内联非静态函数中都要求另外定义一个内联非静态函数,以便在内联体不能被内联的情况下使用?如果是这样的话,我猜想我可以用static inline
来代替,但我不希望这会在以后咬我,所以这里最好采取什么行动?显然,我想坚持使用C99,并且我想要插入一些功能。 (是的,我知道编译器通常知道内联而没有被告知,但我有我的理由)
“inline”关键字不是您认为的那样。对于编译器来说,这最好暗示这个代码可能成为内联的候选者。更糟的是,它被忽略了。 – jer 2011-03-20 16:50:02
你可以通过你的cc编译其他文件吗?也许在编译器的问题。 – 2011-03-20 16:53:25
其实我使用'-Winline',所以在我的情况下它不会被忽略。请原谅我没有具体说明这一点,但我并不认为有人会评论C语言中“内联”的含义或对此问题的反应。在上述的大多数其他变体中,你当然是绝对正确的。 @Mihran不,编译器没问题。在更详细地检查C99规格后,我已经将问题中的内联函数指定为“静态内联”,并且一切正常。我想知道如果我在这里采取了正确的步骤,虽然... – amn 2011-03-20 16:55:21