我目前正在管理一些从单一源代码树(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.
最后两个平台我有很好的 C 编译器,但没有 C++。
如您所见,我支持多种平台,并且共享大量库代码(和一些应用程序代码)。
最佳答案
如果您使用 LLVM , llvm-g++
会将您的 C++ 代码编译为 LLVM 位码,并且 llc
有一个将位码转换为 C 的后端。
你可以这样写命令:
llvm-g++ -emit-llvm -c foo.cpp -o foo.o
llc -march=c <foo.o >foo.c
关于仅 C++ 前端编译器(将 C++ 转换为 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1833484/