ssreefc@techunix.BITNET (florin coter) (12/20/88)
hello world, Please give some hints regardingthe question: how can i decide to make a variable extern, static, etc... thanks world, florin
guy@auspex.UUCP (Guy Harris) (12/21/88)
>Please give some hints regardingthe question: how can i decide to make >a variable extern, static, etc... Well, you think about it a bit, and then decide.... If you're talking about variables that aren't best made "auto", the best rule is to make *everything* "static" except stuff that is actually referred to by modules other than the one in which it's defined. That reduces the number of inter-module dependencies, and since you can eliminate or change the meaning or behavior of "static" variables and function without having to check any modules other than the one in which they appear, it makes maintenance and change easier. I think some UNIX C implementations may not be able to put "static" variables into BSS space, however, so this may increase the size of the executable image on those implementations. Implementations using the 4.xBSD compiler and linker can put them in BSS space; I'm not sure about ones using the System V compilers and linker, but I'd be surprised and somewhat disappointed if they couldn't. I don't know what other implementations can or can't do; some of them may not have the notion of BSS, so some huge array initialized, by default, to zero might take up space no matter what storage class it has.