After all the recent posts about statics, I wanted to talk about the extern keyword before moving onto something different.
Do you remember the problem we had with our “global” static variable in this post? If you haven’t read it, the code example illustrated that static variables are only available to code in the translation unit. That means that if you include a file with a static variable in several of your other files, you won’t just have one copy of that variable. This is really important, because you could run into a nasty bug if you are accessing the static variable thinking that it is the same one across all the files you are using it in.
The extern keyword provides the solution to this, as it allows you to create a true global variable that will be available across all files and all translation units.