2014-09-04 39 views
0

这里有几个问题询问这样的事情是否存在,通常使用促进void指针的答案。是C++ STL技术上不可行的C实现吗?

我想数据结构和算法是强类型。我认为这是可行的,但实施将是漫长的!

该计划是通过类型名称参数化数据结构,迭代器和算法,用C预处理器执行名称修改。它会严格依靠#include指令来写出排列。最后,将结果封装在友好的多态接口中以隐藏重名名称(基于C11 _Generic)。

理想的答案是要么“肯定,这会工作”或“不能,C不能做X”。我基本上是在寻找关于这是否像傻瓜差事的指导。谢谢

+1

那么你想要做的事情基本上是重新实现C++?而对于您的信息,C++最初是作为C预处理器完成的,它完成了您想做的大部分工作。 – 2014-09-04 10:53:30

+0

我可能是错的,但我觉得很难找到一个支持C11的平台,而这个平台也不支持C++。 – dreamlax 2014-09-04 10:57:03

+0

这是要求* STL还是* a *类型安全的容器库?答案无论如何都是微不足道的:1)否,'_Generic'不够强大,甚至不能替代模板可以做的一小部分; 2)是的,'_Generic'功能强大到足以保证有用和安全。 – Leushenko 2014-11-09 01:18:48

回答

1

1992年正在呼唤,希望他们的技术回来。

第一个C++编译器实际上将C++转换为C,因此可以完成,但是您需要深入了解为什么要这样做以及它是否值得。

+0

我不确定cfront是否可以处理现代模板的复杂性,但一般的情感是有道理的。 “只编写一个编译器”是一种解决方案 - 代码生成器显然能够编写任何东西。宏是否包含足够的发生器是不太清楚的。 “为什么”可能不会引发一些C++用户的愤怒,所以我们只是说“为了好玩”。谢谢 – 2014-09-08 14:40:39