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

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


元芳怎么了
浏览 862回答 3
3回答

青春有我

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

繁星coding

这个inline函数的问题也许是很“迷人”的一个问题,要理解它还要回到C语言的源头去-C语言标准,这里贴出C99(C11现在还收费呢)中关于inline的一部分内容。你看看你能看明白吗?而且可以肯定的是你给出的那段代码一定会编译出错的,会出现重复定义问题。

当年话下

如果直接把函数体写在头文件里自动就是inline了,但遇到不可内联的情况编译器会报错,要是头文件里有函数体,而程序文件中又写了函数体,如果不是重载的情况,编译时就报错了应该是c++,c是没有inline的
打开App,查看更多内容
随时随地看视频慕课网APP