In general, source to source translation systems have two critical
problems. Such translators usually produce highly unreadable output.
If you want to be able to maintain the translated code afterwards,
just forget it. You're almost certainly going to be better off just
reimplmenting your software.

The second problem is the runtime support. For example, if you wanted
to translate
cout << "hello, world" << endl;
into C to run it on another system that has no C++ compiler, a C++ to C
translator would be happy to convert it to a sequence of function
calls, something like this:
(*(__0oHostreamlsPFR6Hostream_R6Hostream(
(__0oHostreamlsPCc(((struct ostream *)
(&(cout.__b_ostream))),
((char *)"hello, world"))),
(__0FEendlR6Hostream))));
Unfortunately, the target system won't have any of the required
library functions. Such runtime support systems usually come with
compilers.

It would help to know more about your intentions.

>[Is there anything other than cfront? -John]

Yes, the Edison Design Group (http://www.edg.com) produces an
excellent and very carefully crafted C++ front-end package that
includes a C code generator.