On Sun, Apr 11, 2010 at 1:08 PM, Bruno Haible <br...@clisp.org> wrote: > James Youngman wrote: >> * lib/close-stream.c (close_stream): Make boolean variables const >> to document the fact that we set but do not change them. >> --- a/lib/close-stream.c >> +++ b/lib/close-stream.c >> @@ -55,9 +55,9 @@ >> int >> close_stream (FILE *stream) >> { >> - bool some_pending = (__fpending (stream) != 0); >> - bool prev_fail = (ferror (stream) != 0); >> - bool fclose_fail = (fclose (stream) != 0); >> + const bool some_pending = (__fpending (stream) != 0); >> + const bool prev_fail = (ferror (stream) != 0); >> + const bool fclose_fail = (fclose (stream) != 0); > > There are programming languages where this style of using 'const' may > be customary (like C++ or Java), but I don't think it helps in C code: > 1) For the person reading the code, it draws the attention away from > more importants parts of the code.
On the contrary, it's a signal that there is no need to consider changes to the values of those variables in the later code. > 2) For the person modifying the code, it requires additional attention, > to remember to remove 'const' here and there. That's frequent in C, > because the vast majority of code in C is written in style that > modifies local variables (as opposed to functional style). This statement is true but I don't understand its relevance. If some of the variables are modified and some are not, this surely increases the value of the const qualifier as an item of documentation. > If you find yourself looking at a function where you don't overlook > all the uses of a variable, then my advice would be to > a) use an IDE which shows you all uses of a local variable on > demand (Eclipse can do that, and José Marchesi knows how to do > that with Emacs), > b) limit the scope of the variables. Create intermediate blocks > that declare variables for the minimum possible scope. > > Bruno >