作业帮 > 综合 > 作业

C中函数inline定义问题,

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/06 17:21:54
C中函数inline定义问题,
如果在头文件abc.h中用声明了函数test,并且用inline定义了它的内容,但在abc.c文件中又对test进行了定义,那么使用是,具体用到的是哪个定义?还是需要分情况,如何判定?
C中函数inline定义问题,
你没有给出具体源码,所以只能猜,据我所知,有一种情况可能符合你的描述:
这种用法,同一个文件内的inline test函数会被内联展开,其他文件的test函数,会编译成普通函数来调用.
根据你的提问可以理解为:abc.h中的test函数,被abc.h内联展开.abc.c中的test函数,被abc,c调用,与abc.h里面的test无关.如果还有def.c调用test,那么调用那个的是abc.c中的.前提是abc.c和def.c不包含abc.h,如果包含abc.h那么调用test函数的地方,会被abc.h中的test函数进行内联展开.
GCC编译器和 C99编译器代码有所不同,都可能能达到你描述代码的要求,说可能是因为我只在gcc编译器上编译过类似代码,c99的用法是网络文章说的,我没试过,所以只能说可能.
再问: 我把大致代码写出来下: abc.h: int test(void); static inline int test(void) { return 0; } abc.c: #include int test(void) { return 1; } def.c: #include int main(void) { return test(); } 情况就是这样,可以肯定的是def.c用到的就是abc.c中的test代码。能给个分析,说明一下么?(是内核中的一段代码,简化出来的,应该比较清晰了)