|
1
38
在所使用的每个翻译单位中定义。接下来是可怕的细节。第一
但是,如果在类定义中定义函数,则隐式声明为
从现在起,您对
同一实体
在您的程序中,ODR的另一件事恰好限制了您。
我现在删掉了一些不重要的东西。以上是关于内联函数需要记住的两个重要内容。如果你多次定义一个外部内联函数,但确实以不同的方式定义了它,或者如果你定义了它并且其中使用的名称解析为不同的实体,那么你就是在做未定义的行为。
函数必须在使用它的每个TU中定义的规则很容易记住。这也是很容易记住的。但是,关于名字解析的事情呢?这里举个例子。考虑一个静态函数
现在,既然
以下是相同的事情:
现在,如果你把
|
|
|
2
10
该方法是否实际内联由编译器自行决定。然而,内联关键字的存在也会影响方法的链接。
|
|
|
3
6
需要注意的是:当方法内联声明时,它的定义必须与其声明一起。 |
|
|
4
2
关于harath.jr的答案,如果一个方法的定义有“inline”关键字,并且该定义在同一个标头中可用,则不需要内联声明该方法, 也就是 :
这对于根据构建是否为“”来有条件地内联方法非常有用 调试 “就像这样:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |