When is a global not a global? When it’s a static variable.
This post, and the next three, will talk about static variables. Let’s start with static variables declared in a file.
Static variables in a file
If you declare a static variable at file level (i.e. not inside any other code), then you are creating a so-called “global” variable that will:
- be available for the entire duration of your program, and
- be accessible only from that translation (compilation) unit (i.e. the file itself and any file that includes it).
Number two is the important one here. It means that if you include (say) a header that contains a static variable in two different source files, you will end up with two “global” variables with the same name.