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

时间:2017-01-13 00:20:38

标签: c++ linkage unnamed-namespace

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

foo的联系是什么。?

1 个答案:

答案 0 :(得分:3)

函数ListBox具有外部链接,因为它是全局的而未声明public partial class Form1 : Form { private List<string> linesInFile; public Form1() { InitializeComponent(); File.WriteAllLines( "Lines.txt", new string[] { "1", "2", "3" } ); this.linesInFile = File.ReadAllLines( "Lines.txt" ).ToList(); this.listBox1.DataSource = this.linesInFile; } private void Remove_Click(object sender, EventArgs e) { this.linesInFile.Remove( "1" ); File.WriteAllLines( "Lines.txt", this.linesInFile ); this.listBox1.DataSource = null; this.listBox1.DataSource = this.linesInFile; } } 。函数的链接并不取决于参数。

foo具有内部联系这一事实意味着无法从另一个翻译单元调用static,因为无法在其他翻译单元中声明A,因为无法写出foo参数类型的名称。任何在另一个翻译单元中定义foo的尝试实际上都会定义不同的类型。

因此,虽然名称foo在技术上具有外部链接,但实际上其他翻译单元无法引用它。