我试图在网上搜索一个好的答案,但未能找到一个我可以完全理解的答案。假设我有一个标头“add.h”:
inline int add(int a, int b){ return a+b; }
名为“adddouble.c”的文件:
#include "add.h"
int adddouble(int a, int b){ return 2*add(a,b); }
名为“addsquare.c”的文件:
#include "add.h"
int addsquare(int a, int b){ return add(a,b)*add(a,b); }
主文件“main.c”:
#include<stdio.h>
int adddouble(int, int);
int addsquare(int, int);
int main(){
printf("add double = %d\n", adddouble(10,20));
printf("add square = %d\n", addsquare(10,20));
return 0;
}
我使用 gcc5.2.0 编译这些文件,但得到:“未定义的架构 x86_64 符号:”。如果我将 static 添加到 add.h 中的内联函数或
添加声明“extern int add(int, int);”到“adddouble.c”,它编译
成功无错误。我是内联函数的新手,我不知道如何解释和理解这种行为。谢谢