小编Luc*_* Hu的帖子

C中头文件中的内联函数

我试图在线搜索一个好的答案,但没有得到一个我完全可以理解的答案.假设我有一个标题"add.h":

inline int add(int a, int b){ return a+b; }
Run Code Online (Sandbox Code Playgroud)

一个名为"adddouble.c"的文件:

#include "add.h"

int adddouble(int a, int b){ return 2*add(a,b); }
Run Code Online (Sandbox Code Playgroud)

一个名为"addsquare.c"的文件:

#include "add.h"

int addsquare(int a, int b){ return add(a,b)*add(a,b); }
Run Code Online (Sandbox Code Playgroud)

主文件"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;
}
Run Code Online (Sandbox Code Playgroud)

我使用gcc5.2.0来编译这些文件,但得到了:"架构x86_64的未定义符号:".如果我在add.h中添加静态到内联函数或添加声明"extern int add(int,int);" 到"adddouble.c",它成功编译没有错误.我是新的内联函数,我不知道如何解释和理解这种行为.谢谢

c inline

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

inline ×1