Un compilateur est composé de deux grands blocs: le 'front end' et le 'back-end'.
L'extrémité avant d'un compilateur analyse le code source et crée une certaine forme de 'intermédiaire de la représentation" du dit code source qui est beaucoup plus facile à analyser par un algorithme de machine qu'est le code source (c'est à dire alors que le code source par exemple C++ est conçu pour aider le programmeur humain à écrire du code, l'intermédiaire du formulaire est conçu pour vous aider à simplifier l' algorithme qui analyse dit intermédiaire forme plus facile).
L'extrémité arrière d'un compilateur prend l'intermédiaire du formulaire, puis la convertit en une 'langue cible'.
Maintenant, la langue cible pour l'utilisation générale compilateurs assembleur langues pour différents processeurs, mais il n'y a rien à interdire à un compilateur pour produire du code dans un autre langage, aussi longtemps que a dit de la langue cible (au moins) aussi souple comme un général de l'UC de l'assembleur.
Maintenant, comme vous pouvez l'imaginer, C est certainement aussi souple qu'une CPU assembleur, tels que C++ le compilateur C est vraiment pas de problème à mettre en œuvre à partir d'une technique de pov.
Vous avez donc: C++ ---frontEnd---> someIntermediaryForm ---backEnd---> C
Vous voudrez peut-être vérifier ces gars: http://www.edg.com/index.php?location=c_frontend
(le lien ci-dessus est fourni à titre purement informatif pour ce qui peut être fait, ils ont la licence de leurs extrémités avant pour des dizaines de milliers de dollars)
PS
Autant que je sache, il n'existe pas de C++ le compilateur C de GNU, et ce totalement me bat (si je ne me trompe à ce sujet). Parce que le langage C est assez petite et il est de mécanismes internes sont assez rudimentaires, un compilateur C exige quelque chose comme un homme de l'année (je peux vous dire de première main de cause, j'ai écrit un tel compilateur moi mai il y a des années, et il produit un [virtuel] la pile de la machine intermédiaire de code), et être capable d'avoir une maintenu, jusqu'à la date de compilateur C++ tandis que seulement avoir à écrire un compilateur C une fois serait une grande chose à avoir...