With Bruno's approach, a public function must
have *no* spec just before its definition, while each private one does.
That also depends on whether you insist on prototypes for all static
functions. In that case, that's the place for specs of private
functions, and *no* function has a spec before the definition.
Why would these two issues be correlated? The important thing for me is that
a user of a module only needs to read through the .h file, which is typically
much smaller than the .c file. If someone needs to know the documentation of
a 'static' function, he's in the situation of modifying the module, and he
better has read the entire .c file before he starts doing so. So, in this
case, it does not really matter where in the .c file the comments for 'static'
functions are located.
If you always have prototypes, the consistency argument of Jim can be
solved by saying that *all declarations* have a comment no matter where
they are and *no definitions* have a comment.
That's how I did in GNU Smalltalk for example.
Paolo