Compilador apenas para interface C++ (Converter C++ para C)
estou actualmente a gerir um código C++ que funciona em várias plataformas a partir de uma única árvore de código (Win32, Linux, Verificone de terminais CC, MBED e até mesmo o Nintendo GBA/DS). No entanto, eu preciso construir um aplicativo alvo em uma plataforma embutida para a qual não há nenhum compilador C++ (Apenas C). Lembro-me que muitos dos primeiros compiladores C++ eram apenas costuras frontais em compiladores C existentes (Glockenspiel por exemplo usado MSC). Existem alguns compiladores de C++' frontend ' em uso hoje que irão gerar código 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.
as duas últimas plataformas eu tenho bons compiladores C para mas não C++.
Como podem ver, estou a apoiar uma grande variedade de plataformas e partilho um grande corpo de código de biblioteca (e algum código app).7 answers
O Comeau C++ Faz isto.
Não posso ajudar com o Z8, mas a família Renesas M16C/M32C tem GCC hoje em dia-ver http://www.kpitgnutools.com/ para a barra de ferramentas pré-construída no Windows. Ainda não o usei, mas pode ser uma opção melhor do que uma interface C++ de terceiros, especialmente porque o seu código já tem como alvo o GCC noutras plataformas.
Comeau C++ gera C como sua saída, e eles parecem estar muito felizes em portá-lo para trabalhar com diferentes compiladores back-end, embora eu não tenho certeza sobre o preço exato para isso.
Se você quiser um pouco mais de uma abordagem" role your own", você poderia comprar uma licença para o compilador de C++ EDG. É normalmente usado como um front-end (por exemplo, pelo Comeau e Intel), mas eu acredito que como é enviado, ele inclui um gerador de código que produz C como sua saída. O seu licenciamento é mais orientado para vendedores de compiladores, no entanto, uma licença lhe dá muitos direitos, mas é muito caro.
Do que eu entendi, o Suporte de c++ no gcc para r8c/m16c/r32c não é muito maduro e bom o suficiente para o código de produção. Mas para r8c / m16c / m32c / r32c há pelo menos um compilador que suporta C++ incorporado e que é IAR, eu acho que a tarefa também suporta C++ incorporado no m16c.
Notice that the valid solution is for llvm 1.3 a última versão da llvm foi 6.0.0 então não funcionaria. (Eu postei isso porque eu tentei a solução deste post, mas ele não funciona mais) (Talvez eu fiz algo ruim)
Nos meus testes O llc já não aceita a opção -march=C. E voltar para o 1.3 ainda não é possível para mim. Então tente cuidar da versão.