函数与来自未命名命名空间的参数的链接


namespace { class A { } ; }
void foo ( A ) // _Z3fooN12_GLOBAL__N_11AE
{ ; } 

显然,函数的符号将引用 A 的名称,它是唯一命名命名空间的成员(因此)。

FOO的联动是什么?

函数foo具有外部链接,因为它是全局的并且未声明为static。函数的链接不依赖于参数。

A具有内部链接的事实意味着不可能从另一个翻译单元调用foo,因为不可能在另一个翻译单元中声明foo,因为没有办法写foo参数类型的名称。任何在另一个翻译单元中定义A的尝试实际上都会定义不同的类型。

因此,虽然该名称在技术上foo具有外部联系,但实际上不能由其他翻译单位引用。

相关内容

  • 没有找到相关文章

最新更新