Why do they need to be global? Generally, I've never needed to parse options [which I think is what you are doing] outside of a single .c[pp] file. You certainly can't mix static with extern, as they are (in this circumstance) complete opposites.
A header file may declare a struct/class to store the option values and some functions to interface with the option parsing, but you should not need to know what the options are called or what their defaults are outside of the parser - unless you go about it in a fashion where you pass in a structure containing the relevant option information and then call a function to parse the options.
--
Mats