【发布时间】:2016-05-06 22:27:31
【问题描述】:
我知道llvm可以用来将c++转换成c代码。我想知道clang 是否可以做同样的事情(看到clang 是从llvm 派生的)。
那我可以用clang把c++代码转成c代码吗?
如果你想知道我为什么要这样做,这是我的场景:
PIC 是一家微控制器制造商,不生产 c++ 编译器,但为他们的大部分产品生产 c 编译器。我想用 c++ 编写,然后作为构建过程的一部分,将 c++ 代码转换为临时 c 文件,然后将其输入 PIC 编译器,中提琴我已经为 PIC micro 编写了 c++ 代码。
【问题讨论】:
-
“我知道 llvm 可用于将 c++ 转换为 c 代码” - 怎么样? LLVM 是一个编译器基础设施库。它甚至不知道 C 或 C++。也许你最好阅读文档 LLVM 和 clang 实际上是什么。
-
嗯,很有趣。但我不会称之为 C 代码。它更像是带有 C 语法的汇编程序(阅读正文)。您绝对不希望在您的项目中使用此类代码(而且每个高级人员都会拒绝此类代码)。
-
@Olaf 这实际上就是我所需要的.....这就是我需要它的原因:PIC(一个微控制器品牌)没有为它的任何微控制器制作
c++编译器(除了真的很花哨),但它确实使 c 编译器......所以我想使用一个转换器来生成临时输入 PIC 编译器......我将更新问题以反映这一点 -
如果是 PIC32:使用 gcc(IIRC 他们已经为此提供了 gcc)。对于 PIC16:您也可以使用 gcc。但是,对于这两种变体:对 PIC16 使用 C++ 编码风格将导致糟糕的代码。不仅在源代码级别,而且 - 更糟糕的是 - 在机器级别。这些 MCU 并非真正设计为支持 C,更少支持具有 OOP 功能的 C++。您真的应该更改为更适合的东西,例如 MSP430 或 ARMv6M/7M,或者您编写真正的 C 代码。请注意,转换后的 C 代码很可能也不能很好地优化,众所周知,Microchip 编译器在这方面做得很差。