我尝试过不同的网站,但我不明白。你能用简单的英语解释吗?范围和连接有什么区别?
1
A
回答
0
继续阅读您的网页(http://msdn.microsoft.com/en-us/library/teta4z44.aspx)。这是谈论翻译单位(源文件)之间对象的可见性。它首先讨论“内部链接”:定义为static
的对象,对于翻译单元是唯一的,但始终可用。
接下来讨论“外部连接”:类似对象没有声明为static
。这些由翻译单位共享。
最后,“无链接”:一个对象,如函数中的变量,未声明为extern
,这是该范围唯一的。
如果您按照页面底部的链接进行了解释。
1
“scope”是编译器的名称空间; “联动”是关于编制单位的。
我稍微解释一点:在函数中声明的变量具有该函数的作用域,即仅在该函数内可见。在源文件中声明为静态的变量只能由该源文件中的代码(以及所有包含的文件!)看到。变量也可以具有全局作用域:它们可以在源文件中引用,但不在该源文件中声明(分配),但在另一个源文件中声明。
替代“源文件”,我们应该说“编译单元”,因为它是编译的C源文件,以及所有包含的文件。范围是指编译器可以在编译单元中“看到”的所有内容。这些是命名空间。
编译完项目后,会出现一些目标文件,每个编译单元一个。每个可以引用未在编译单元中声明的变量。链接器现在必须解析目标文件之间的这些引用:链接。
这也适用于功能。
相关问题
- 1. ,和+连接时有什么区别?
- 2. 反连接和反半连接有什么区别?
- 3. 插座连接和动作连接有什么区别?
- 4. 散列连接和合并连接(Oracle RDBMS)有什么区别?
- 5. 安装Rubygems“本地”和“系统范围”有什么区别?
- 6. Perl中词法和动态范围界定有什么区别?
- 7. Angular:'='和'=?'有什么区别而在指令定义范围
- 8. 春季请求和会话范围有什么区别?
- 9. 有什么区别:超出范围和:无效?
- 10. JPA和JDO规范有什么区别?
- 11. SocketConnection与DCOM连接有什么区别
- 12. 左外连接 - 有什么区别?
- 13. 套接字的连接和读取超时有什么区别?
- 14. NTFS连接点和符号链接有什么区别?
- 15. MySQL中的套接字和端口连接有什么区别?
- 16. IncomingMessage的“套接字”,“连接”和“connection.socket”有什么区别?
- 17. 是什么左边的区别连接和MySQL中右连接
- 18. IComparable和IEquatable接口有什么区别?
- 19. GCC和LD链接有什么区别?
- 20. 链接和绑定有什么区别?
- 21. .Net Web API 2,OWIN和OAuth:范围和角色。有什么区别?
- 22. Linq:在连接中==和equals有什么区别?
- 23. 从DataSource getconnection()和Mysql会话连接有什么区别?
- 24. PHP&mysqli:持久连接和交互有什么区别?
- 25. Mysql的表连接中的“using”和“on”有什么区别?
- 26. '前馈网络'和'全连接网络'有什么区别?
- 27. pg_hba.conf中的“local”和“localhost”连接类型有什么区别?
- 28. mysql中'where'和不同'连接'有什么区别?
- 29. MySql连接器/ J中的autoReconnect和autoReconnectForPools有什么区别?
- 30. 有什么区别`和$(Bash中有什么区别?
来自C标准(或更确切地说,某些C99草案N1570),6.2.2/1的一个令人惊讶的简单陈述“在不同范围内或在同一范围内声明的标识符不止一次可用于引用同一对象或通过称为链接的过程运行。“ – dyp 2014-10-27 01:53:22
@dyp:[N1570](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf)是C11的草稿,而不是C99的草稿。 – 2014-10-27 03:20:55
@dyp嗯,我发现这里http://msdn.microsoft.com/en-us/library/teta4z44.aspx,然后它说:“联系确定程序中可以引用标识符的部分(其”可见性“)。”所以它将可见性(我所理解的是范围)与链接混合在一起。我是一个begginer,它很混乱。 – user3646717 2014-10-27 03:50:19