为了账号安全,请及时绑定邮箱和手机立即绑定

C中函数inline定义问题,求解释?

C中函数inline定义问题,求解释?

元芳怎么了 2019-02-26 10:06:16
C中函数inline定义问题,求解释
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

这种用法,同一个文件内的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的用法是网络文章说的,我没试过,所以只能说可能。

查看完整回答
反对 回复 2019-03-26
?
繁星coding

TA贡献1797条经验 获得超4个赞

这个inline函数的问题也许是很“迷人”的一个问题,要理解它还要回到C语言的源头去-C语言标准,这里贴出C99(C11现在还收费呢)中关于inline的一部分内容。

你看看你能看明白吗?而且可以肯定的是你给出的那段代码一定会编译出错的,会出现重复定义问题。




查看完整回答
反对 回复 2019-03-26
?
当年话下

TA贡献1890条经验 获得超9个赞

如果直接把函数体写在头文件里自动就是inline了,但遇到不可内联的情况编译器会报错,要是头文件里有函数体,而程序文件中又写了函数体,如果不是重载的情况,编译时就报错了

应该是c++,c是没有inline的

查看完整回答
反对 回复 2019-03-26
  • 3 回答
  • 0 关注
  • 855 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信