gpt4 book ai didi

c++ - 内联函数和变量具有相同的地址?

转载 作者:行者123 更新时间:2023-11-28 01:46:24 32 4
gpt4 key购买 nike

我正在阅读 inline specifier我真的不明白这部分:

3) An inline function or variable (since C++17) with external linkage (e.g. not declared static) has the following additional properties: 1) It must be declared inline in every translation unit. 2) It has the same address in every translation unit.

函数有相同的地址是什么意思,我什至不知道函数有内存地址?这是否也意味着内联变量都具有相同的地址,就好像它是一个变量一样?如果是这样,为什么还要对变量使用内联?

最佳答案

What does it mean that functions have the same address?

正如其所言。每个翻译单元中的每个相同的内联函数都有相同的地址,即它只是一个相同的函数。您会明白为什么这很重要。

And does this also mean that inline variables all have the same addresses, just as if it was one variable?

没错。

If so, why even use inline on variables?

这就像问为什么要使用 inline 函数。您对头文件中定义的函数使用内联函数,因为它们将被多次包含在多个翻译单元中。如果它们不是内联的,链接器将看到同一个函数的多个定义,并且它会提示重复的符号。它不知道这些函数实际上是完全相同的函数。

inline 在这里出现。通过标记函数 inline,您告诉编译器它始终是同一个函数,即使跨多个翻译单元也是如此。头文件中定义的变量也是如此。它们也包含在多个翻译单元中,链接器不知道它们应该引用同一个变量。 inline 再次修复了这个问题。

关于c++ - 内联函数和变量具有相同的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44871912/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com