Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ frontend only compiler (convert C++ to C)

Tags:

I'm currently managing some C++ code that runs on multiple platforms from a single source tree (Win32, Linux, Verifone CC terminals, MBED and even the Nintendo GBA/DS). However I need to build an app targetted at an embedded platform for which there is no C++ compiler (C only). I remmber that many of the early C++ compilers were only front-ends stitting on existing C compilers (Glockenspiel for example used MSC). Are there any such 'frontend' C++ compilers in use today that will generate C code.

                      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. 

The last two platforms I have good C compilers for but no C++.

As you can see I'm supporting a large variety of platforms and I share a large body of library code (and some app code).

like image 839
Tim Ring Avatar asked Dec 02 '09 15:12

Tim Ring


2 Answers

If you use LLVM, llvm-g++ will compile your C++ code to LLVM bitcode, and llc has a backend which converts bitcode to C.

You could write commands like this:

llvm-g++ -emit-llvm -c foo.cpp -o foo.o llc -march=c <foo.o >foo.c 
like image 160
Jay Conrod Avatar answered Oct 17 '22 23:10

Jay Conrod


Comeau C++ does this.

like image 30
Michael Burr Avatar answered Oct 18 '22 00:10

Michael Burr