Graham Ross' program (modified and updated by many people) to help compose and translate C type declarations. Less formally, it translates "English" such as "declare signal as function (arg1,arg2) returning pointer to function returning void" into "gibberish" such as void (*signal(arg1,arg2))(). It also translates "gibberish" such as char *argv[] (is it an array of char pointers or a pointer to an array of chars?) into "declare argv as array of pointer to char" (the former).

The important commands are declare and explain; fully qualified, the gibberish output may be pasted directly into your C program.

Very useful until you get a good grasp of the declare'em as you'd use'em rule of C. And even then, it remains invaluable.

There is no analogue for C++. Some gibberish should (or can?) never be translated.