【发布时间】:2009-12-17 09:42:19
【问题描述】:
此问题基于上一个问题:How does C# compilation get around needing header files?。
确认 C# 编译使用多次传递基本上回答了我最初的问题。此外,答案表明 C# 使用存储在程序集中的类型和方法签名元数据在编译时检查代码语法。
问:C/C++/Objective-C 如何知道在运行时加载哪些在编译时链接的代码?并且要将其与我熟悉的技术联系起来,C#/CLR 是如何做到这一点的?
如果我错了,请纠正我,但是对于 C#/CLR,我直观的理解是在执行时会检查某些路径是否有程序集,并且基本上所有代码都是在运行时动态加载和链接的。
编辑:更新为包含 C++ 和 Objective-C 与 C。
更新:澄清一下,我真正好奇的是 C/C++/Objective-C 编译如何将我的源代码中的“外部定义”符号与该代码的实际实现相匹配,什么是编译输出,基本上是微处理器如何执行编译输出以将控制无缝传递给库代码(就指令指针而言)。我已经用 CLR 虚拟机完成了这项工作,但我很想知道在实际微处理器上的 C++/Objective-C 中它在概念上是如何工作的。
【问题讨论】:
标签: c# c compiler-construction clr