仅限C++前端编译器(将C++转换为C)

Tim*_*ing 24 c c++ embedded cross-platform

我目前正在管理从单个源代码树(Win32,Linux,Verifone CC终端,MBED甚至Nintendo GBA/DS)在多个平台上运行的一些C++代码.但是,我需要构建一个针对没有C++编译器(仅限C)的嵌入式平台的应用程序.我重申许多早期的C++编译器只是在现有C编译器(例如Glockenspiel使用MSC)上的前端.是否有任何今天使用的"前端"C++编译器将生成C代码.

                      Tools            Platform
                      -----------      ------------

                ______Visual C++ _____ WIN32
               /
              /_______MBED (ARM)_______MBED (ARM dev board).
             /
            /_________GCC (x86)________Linux
           /
Source____/___________GCC (ARM)________GBA/DS
          \
           \__________SDA______________Verifone Verix CC Terminals
            \
             \________ARM SDT__________Verifine VerixV CC terminals
              \
               \______????_____________Renases M8/16/32.
                \
                 \____????_____________Z8 family.
Run Code Online (Sandbox Code Playgroud)

最后两个平台我有很好的C编译器,但没有C++.

正如您所看到的,我支持各种各样的平台,并且我共享大量的库代码(以及一些应用程序代码).

Jay*_*rod 41

如果使用LLVM,llvm-g++则将C++代码编译为LLVM bitcode,并llc具有将bitcode转换为C的后端.

你可以写这样的命令:

llvm-g++ -emit-llvm -c foo.cpp -o foo.o
llc -march=c <foo.o >foo.c
Run Code Online (Sandbox Code Playgroud)

  • C 后端 [在 LLVM 3.1 中删除](http://releases.llvm.org/3.1/docs/ReleaseNotes.html#changes):“它有很多问题,以至于无法编译任何重要的程序.” (2认同)

Mic*_*urr 18

Comeau C++就是这么做的.

  • @Seth:网站有点落伍,但它*是最好的C++编译器,至少在一致性方面. (8认同)
  • 哇,这是"惊人的","惊人的","神话般的",他们甚至有一个闪烁的javascript链接浮在文本顶部,敦促你购买它! (7认同)
  • @JudgeDread:至少正常的Windows版Comeau C++显然很便宜 - 50美元/份.我不知道他们收取什么费用将其移植到其他目标. (4认同)
  • @JudgeDread:你应该向Comeau询问价格 - 对于更受欢迎的平台(或者至少是Windows和Linux),它的价格是50美元.如果他已经有了你正在寻找的目标的端口,也许它会是一样的.但对于自定义端口,它可能不会(此页面,http://www.comeaucomputing.com/custom.html,表示$ 5K - $ 50K).但是问起来也不会有害 - 最坏的情况是,你现在没有比现在更好的了. (3认同)

小智 5

无法使用Z8,但瑞萨M16C/M32C系列目前有GCC - 请参阅http://www.kpitgnutools.com/,了解在Windows上托管的预建交叉工具链.我自己还没有使用它,但可能是比第三方C++前端更好的选择,特别是因为你的代码已经在其他平台上面向GCC.