如何在C语言中实现后期binding?如何在C语言中实现后期绑定?
回答
延迟绑定实际上并不是C语言本身的功能,更多是执行环境为您提供的功能。
许多系统将提供延期作为连接器/加载器的功能结合,你也可以使用显式调用诸如dlopen
(打开共享库)和dlsym
(到库中,以便您在得到一个符号的地址可以访问它或称之为)。
用C标准获得后期绑定的唯一半便携方式是使用system()
的一些技巧,甚至至少部分是针对特定实现的。
如果你不是在谈论延迟绑定而是多态,你可以用函数指针来实现这种效果。基本上,您创建了一个struct
,其中包含一个类型的所有数据以及用于查找该类型方法的函数指针。然后,在“构造函数”(通常是init()函数)中,将函数指针设置为该类型的相关函数。
即使你不使用它,你仍然需要包含所有的代码,但它可能是是这种方式可能获得多态性。
C中的符号绑定总是在编译时完成的,而不是运行时。
图书馆绑定,或称为动态链接,是通过Windows上的dlopen()
和dlsym()
和Windows上的LoadLibrary()
和完成的。
使用Objective-C或Lua。两者都是后期绑定,可以方便地与C.
当然,你可以实现自己的名称解析方案的界面语言,但为什么要重新发明轮子?
不幸的是,你没有指定一个操作系统。对于Unix,您可以使用共享库,或创建一个可配置(插件)模块结构。有关详细信息,您可能会发现apache 1.3 webserver的源代码很有用。 http://httpd.apache.org/download.cgi
cppdev似乎是唯一击中与他/她的话的地方。 请看看the definition itself。在几句:
后期绑定,或动态绑定,是一种计算机编程机制 ,其中在一个物体在运行时查找通过名称 被调用的方法。
所有其他答案只是错过了主要观点,即“按名称查找”。
所需的解决方案将非常类似于函数指针查找表以及一个或两个函数按名称(或甚至通过签名)选择正确的函数。我们称之为“哈希表”。
- 1. 如何实现C#random.nextDouble C语言
- 2. 如何在C语言中实现“连续调用”语法糖?
- 3. C#中的后期绑定#
- 4. 在C++中实现一个事件并定期驱动“脚本语言”?
- 5. 如何实现中去编程语言
- 6. C#实现本地代码的后期绑定
- 7. Osek实现语言
- 8. WPF - 实现多语言应用程序 - 绑定问题
- 9. 面向对象语言的动态绑定实现
- 10. COM +后期绑定C#4.0
- 11. C#Excel 2007后期绑定
- 12. 为窗口绑定C语言
- 13. 使用C语言实现Web服务
- 14. 如何制作语言绑定?
- 15. 如何在C++中使用windows DLL(后期绑定)方法?
- 16. 如何在C#中使用自动后期绑定?
- 17. 如何实现多语言支持ERM
- 18. 如何以LISP语言实现堆栈
- 19. 如何实现多语言网站laravel
- 20. 如何实现一种功能语言
- 21. 如何用同一种语言实现一种语言比语言更快?
- 22. 在CodeIgniter中实现多语言结构
- 23. 在pyrocms中实现多语言支持
- 24. 早期和晚期绑定是如何实现的?
- 25. 如何将后期绑定语法转换为vb.net中的早期绑定语法?
- 26. C#后期绑定非存在属性
- 27. C中发布后期绑定对象#
- 28. C中单词的后期绑定#
- 29. 名称绑定和语言绑定
- 30. 如何在C#中实现自定义if语句?
如何使用函数指针数组。然后我们可以根据用户输入从数组中选择函数指针 – cppdev 2010-01-18 11:34:47