繁体   English   中英

使内联函数影响其链接?

[英]Does making a function inline affect its linkage?

如果我在内联函数中它是否会改变它与内部链接的联系? 例如:我在两个文件中使用或调用内联函数:

file1.cpp

//function definition
inline void foo() {}

file2.cpp
//function definition
inline void foo() {}

为什么我需要在每个文件中定义内联函数才能调用它? 我正在建立一个内部联系? 如果我使用static inline怎么办?

如果我在内联函数中它是否会改变它与内部链接的联系?

不,使其内联不会改变其链接。

为什么我需要在每个文件中定义内联函数才能调用它?

因为语言需要它。 C ++ 11 7.1.2 / 4表示“内联函数应在每个使用它的翻译单元中定义,并且在每种情况下都应具有完全相同的定义。”

我正在建立一个内部联系?

不,它仍然具有外部链接:指向该函数的指针在任何转换单元中具有相同的值,并且在该函数内声明的任何静态对象将是任何转换单元中的相同对象。

如果我使用static inline怎么办?

由于static ,这将给出内部联系。 这意味着单独翻译单元中的定义将生成单独的函数,具有不同的地址和任何静态对象的不同副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM