6600pete@hub.UUCP (12/07/89)
From article <21144@mimsy.umd.edu-, by chris@mimsy.umd.edu (Chris Torek): --- f() { char array[12-; ... } -- What's the use of declaring such a thing beyond passing a pointer to it to -- another module? - ...you need some sort of stable object if it is intended to last - beyond the activation of the function that contains it. Right. I wasn't thinking that one would do anything but make the declaration global. I suppose in a large file requiring lots of "stable objects" this would be necessary, but it didn't occur to me. ----------------- -- (BTW, IMHO, this one use of the declaration runs counter to -- intuitive programming practices because it peppers the .c file with things -- that go in the binary executable image file instead of on the stack.) - Some people disapprove of this practise on principle, since it leads to - strange results in cases like - - printf("time1: %stime2: %s", ctime(&t1), ctime(&t2)); - - since ctime() tends to use static storage. - [ placed a little bit out of context ] - I do not understand this question. Oh yes you did! :-) That was my idea exactly. ------------------ --- Some entities---global variables and --- all functions---*always* have static duration. The confusion comes in --- here, as the `static' keyword can be applied to them, this time --- changing not their duration (which is already static) but rather their --- linkage. Static globals get internal linkage, which means that their --- names do not appear to exist outside the one file... -- IMHO, this is a weakness in the standard. Has it been bashed out before? - How can it be a weakness in the standard when it was required by K&R-1? Well, I don't know all that much about the way the committee operated; I take it from this sentence that they took K&R as gospel and didn't mess with it. - It *could* be considered a weakness in C, that this keyword - (`static') was overloaded to also mean `private' in various - circumstances. - This is not to say that avoiding keywords for the sake of avoiding - keywords is necessarily a good thing, or that I agree with the choice - of `static' as a modifier to imply `private'. That is exactly my point. I am marking this Followup-to: comp.std.c, which I don't read, because obviously we are in agreement on this issue. I'm not interested in trying to change the ANSI committee's mind, because this is the very first thing I have ever found in C that I didn't like. I _would_ appreciate it if someone would mail me a clue as to why this keyword was overloaded and no alias for it ("here"? :-) ) was added. ------------------------------------------------------------------------------- Pete Gontier : InterNet: 6600pete@ucsbuxa.ucsb.edu, BitNet: 6600pete@ucsbuxa Editor, Macker : Online Macintosh Programming Journal; mail for subscription Hire this kid : Mac, DOS, C, Pascal, asm, excellent communication skills