Я только что создал два файла для проверки связи встроенной функции, первый
#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);
}
и снова скомпилируйте, он прошел и может работать без ошибок, поэтому я хочу спросить, что здесь произошло?