Some times we need to pre-declare a static variable and then use it. But the variable name of this declaration may be wrong, and the compiler can not detect it, oops!
Example:
/* lots of codes */
static some_type some_name; /* pre-declaration */
/* but it may define "some_name" */
/* use some_name */
/* lots of codes */
static some_type someName = initialization; /* definition */
/* use someName */
/* lots of codes */
"some_name" and "someName" are different, we use a wrong variable at the begin. If the pre-declaration statement does not define any thing, the compiler will detect the mistake.
So, how to declare a static variable but not define it? How can I change the pre-declaration to a new one which makes compiler can detects wrong names?
gcc
will give a warning in the case you've described:
./x.c:3010: warning: 'someName' defined but not used
Solution: Do what you're currently doing, but don't ignore compiler warnings ;)
Edit:
With your updated question: No, I don't believe there is a way to simply declare a static variable (without also defining it).
The common solution is just to make sure all your global scope variables are declared once only, with an initialiser if they need it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With