2009年2月11日 星期三

Do NOT Extern an Inline Function

如果你在 a.cpp 裡宣告了
inline foo();
在b.cpp中,請不要使用extern,eg.
extern foo();
void bar() {
foo();
}
雖然在gcc/g++ compile會過,但是在其他compiler可能會fail。
這是因為inline function在compile時會embed進code裡,所以link的時候理論上會找不到這個symbol。
建議將function 寫在header中,使用include header的方法,eg.
#include"a.h"
比較好。

沒有留言: