题
一个如何能实现后期结合 C语言?
解决方案
后期绑定是不是真正的C语言本身的功能,更多的东西,你的执行环境,为您提供了。
许多系统将提供延期作为连接器/加载器的功能结合,你也可以使用显式调用,如dlopen
(打开共享库)和dlsym
(到库中得到一个符号的地址,这样你就可以访问它或者把它)。
获得与C标准后期绑定唯一半便携式的方法是使用一些欺骗与system()
和甚至是至少部分地实现特定的。
如果你没有那么多谈论延迟绑定,而是多态性,可以实现与函数指针这种效果。基本上,你创建它具有与定位该类型的方法函数指针沿着所有类型的数据struct
。然后,在 “构造”(通常是的init()功能),则设定的函数指针该类型相关的功能。
您还需要包括所有的代码,即使你不使用它,但它的是的可能获得的多态性的方式。
其他提示
符号在C语言绑定是在编译时总是进行,从不运行时。
库结合,或动态链接,因为它的调用,通过dlopen()
并在* nix dlsym()
和LoadLibrary()
和GetProcAddress()
在Windows上完成的。
使用的Objective-C或Lua中。两者都是后期绑定语言,其可以很容易地与C接口。
当然,你可以实现你自己的名字解析方案,但为什么要重新发明轮子?
不幸的是你没有指定的操作系统。对于Unix,可以使用共享库,或创建一个配置的(插件)的模块结构。有关详细信息你可能会找到Apache Web服务器1.3有用的源代码。 http://httpd.apache.org/download.cgi
cppdev似乎是唯一击中与他/她的话的地方。 请看看定义本身。在几句:
后期绑定,或动态绑定,是一种计算机编程机制 中,被调用的方法时的目的是通过名称查找 在运行时。
所有其他的答案只是错过了主要的一点,那就是“查找由名字。”
在所需的解决方案将是非常相似的函数指针的查找表具有两个函数沿按名称选择正确的(或者甚至由签名)。我们称之为“哈希表”。