【发布时间】:2011-12-30 01:49:28
【问题描述】:
我刚刚创建了两个文件来测试内联函数的链接,第一个
#include <iostream>
using namespace std;
inline int f1(int a,int b){
a=a+b;
while(a!=0)
a--;
cout<<"inline";
return a;
}
第二个:
int main(){
extern void f1(int a,int b);
f1(1,2);
}
g++ frist.cc second.cc
undefined reference to `f1(int, int)'
链接器引发错误,因为我希望内联函数是默认的内部链接,所以结果是正确的。
但是,当我将内联函数的调用函数添加到第一个文件时:
#include <iostream>
using namespace std;
inline int f1(int a,int b){
a=a+b;
while(a!=0)
a--;
cout<<"inline";
return a;
}
int callf1(){
f1(10,2);
}
再次编译,通过,可以正常运行,请问这里发生了什么?
【问题讨论】: