2016-05-06 17 views
3

我知道可以使用llvm将C++转换为c代码。我想知道如果clang可以做同样的事情(看到clang是从llvm派生)。使用Clang将C++转换为C代码

那么我可以使用clang将C++代码转换为c代码吗?

如果你想知道为什么我想在这里做,这是我的情景:

PIC,这是一个微控制器制造商,不会使C++编译器,但确实让C编译器的大部分产品。我想用C++编写,然后作为构建过程的一部分,将C++代码转换为临时c文件,然后将其输入到PIC编译器中,然后我为PIC微代码编写了C++代码。

+0

“我知道llvm可以用来将C++转换成c代码” - 那是怎么回事? LLVM是编译器基础架构库。它甚至不知道C或C++。也许你最好阅读LLVM和clang的文档。 – Olaf

+1

@Olaf http://llvm.org/releases/3.1/docs/FAQ.html#translatecxx – DarthRubik

+0

嗯,有趣。但我不会称之为C代码;它更像是具有C语法的汇编器(阅读文本)。你最终不希望在你的项目中使用这样的代码(无论如何,每个高级代码都会拒绝这样的代码)。 – Olaf

回答

4

Clang可以读取C++并发出LLVM IR。您似乎知道LLVM可以读取IR并发出C(来自您自己的链接:http://llvm.org/releases/3.1/docs/FAQ.html#translatecxx)。所以Clang不能直接发射C,但它可以发射LLVM IR,然后转向C并转换为C.两步,Clang就是其中之一。

+4

请注意,大约四年前C后端功能已被[删除](http://llvm.org/viewvc/llvm-project?view=revision&revision=153307)。你需要及时回去使用它。继续适当的谨慎。 –

+0

@BenjaminBarenblat:哇,太糟糕了。那么,我刚刚发现(但没有测试):https://github.com/draperlaboratory/llvm-cbe –