jcproto generates static/extern function prototypes and variable declarations from C source. It requires ANSI-style function definitions: it won't work with the archaic "int main(ac,av) int ac; char **av; { return 0; }" style of function definition. Various finer points of prototype creation are handled correctly, I believe, but if there is an omission, let me know.
With the -e option, only extern declarations for non-static functions and variables are generated. With the -s option only static declarations for local functions and variables are generated.
I also have another, older C-prototyping tool which has similar features, but more bugs. However it does have the additional feature of attempting to split the source code into individual files, each containing a single function or variable definition, when the -s option is given. This code is old, though -- much better to use jcproto above.