已关闭,此问题需要更focused,目前不接受回答。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
两年前关闭了。
社区在2天前审查了是否重新讨论此问题,并将其关闭:
不适用于此网站我们不允许提出寻求书籍、工具、软件库等建议的问题。您可以编辑问题,以便通过事实和引用来回答。
Improve this question
我有一个程序,它是由用户配置使用C类和相同的类应该用来配置一个程序,只能使用C99(开放CL语言)的子集。
所以我的问题是:有没有办法把C编译成C-Code?
开源会很棒!
5条答案
按热度按时间wwtsj6pe1#
您可以使用clang C++前端生成llvm字节码,并使用
llc
发出C代码,请参阅llc doc,特别是c
选项。两者都是开源的,具有类似BSD的许可证。zxlwwiss2#
C++ FAQ有一个可能性列表:可以把C++转换成C吗?
简而言之,它说你不能期望这会给予你特别可读的代码。多重继承、虚函数解析、模板、运算符重载等等。在纯C语言中没有一种简洁的方式来表达这些概念。如果你所追求的是可编译的C语言,那么这可能是你要走的路。
nfg76nw03#
Comeau编译器似乎能够做到这一点。来自Wikipedia“Comeau C/C++不是直接产生可执行文件,而是输出C代码,需要一个单独的C编译器才能产生最终的程序。”
不过,我从来没试过。
mznpcxlj4#
https://visualgdb.com
http://llvm.org/docs/FAQ.html#translatecxx
它可以处理一些代码,但对于更复杂的实现会失败,因为它还没有完全更新到一些现代C++约定。所以请尝试经常编译代码,直到您了解允许的内容。
对于9.0.1版,命令行中的sytax用法如下:
对于旧版本(不确定过渡版本),请使用以下语法:
请注意,它创建了一个GNU风格的C,而不是真正的ANSI C。在你对代码投入太多之前,你会想测试一下它对你是否有用。例如,一些嵌入式系统只接受ANSI C。
还要注意的是,它会生成功能强大但相当不可读的代码。我建议注解和维护您的C++代码,而不要担心最终的C代码。
https://www.autometer.de/unix4fun/coherent/#inst_coh
http://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_3.0.3/source/cfront_3_0_3.tgz
m0rkklqb5#
1.与流行的神话相反,在撰写本文时,还没有一个版本的g将C++转换为C。这样的事情似乎是可行的,但我不知道有人实际上做过(还没有)。
http://www.cs.technion.ac.il/users/yechiel/c++-faq/convert-to-c.html