注册 登录
编程论坛 C++教室

内联函数的多次定义的疑问

lintaoyn 发布于 2010-08-07 10:26, 2249 次点击
内联函数可能要在程序中定义不止一次。
这句话看不懂,函数怎样定义一次以上?(inline和noninline)谁举个例说明下,谢谢了!
8 回复
#2
lintaoyn2010-08-07 10:56
lampeter123你知道不?知道的话帮忙说下……
#3
东海一鱼2010-08-07 11:16
没这末复杂吧,inline只是替换宏的简单函数而已(而且能否形成替换,决定权还在编译器)。
#4
lintaoyn2010-08-07 11:20
我是想知道一个函数什么样能定义多次,还是内联函数有可能定义多次,普通的函数不行,声明和定义放在不同文件是情况下,要什么弄?
#5
vfdff2010-08-07 15:27
inline函数一般是static 函数,那么在不同的文件中不是就可以有不同的具体实现形式了
#6
yxwsbobo2010-08-07 16:54
你可以在

a.h

里定义

inline int fun()
{
    return 1;
}


在 b.h

里定义

inline int fun()
{
    return 100;
}

因为inline函数编译时需要直接插入函数代码,所以不能使extern的,每个编译模块(cpp源文件)中必须包含其定义代码(不是声明)
所以"内联函数有可能在程序中定义不止一次,"就是指在每个调用inline函数的源文件中都要有inline的定义,所以把inline定义放在头文件中,需要时include就可以了。


搜到的,说的比较清楚了
#7
lintaoyn2010-08-07 18:08
觉得是作用域的问题,就是名字一样而已,但是不在一个作用域里,然后有各自的定义,先这么理解的,谢谢几位了
#8
pangding2010-08-07 22:48
noninline 不可能有这种关键字吧……

内联函数可能要在程序中定义不止一次,这句话在哪看见的?真是糟糕的实践……
#9
lintaoyn2010-08-08 09:45
回复 8楼 pangding
noninline不是关键字,我自己写的,与inline互补。
原话在C++ primer 中文版 第四版 222页。我有点断章取义。
1