Question: How can i refresh grid data when new data added in exts?

Answer: 
Making it const and making it static do two different things.

* if it is const, each function call gets its own unchangeable instance of the struct
* if it is static there is one changeable instance of the struct shared across all function calls

It sounds as though what you want is a struct instance that is both static and const, which is a reasonable thing to do.

Performance wise, the static version should have a slight edge, as construction of the struct instance will only be done once.
Eeeww. At least change your functions name to 'case\_insensitive\_guess\_unit'. Most of those aren't 'real' units, and those which are ('K' for example is Kelvin not kilo, 'b' is usually bit and 'B' byte) aren't the units you're returning.

If the spec is k[b] -> 1000, m[b] -> 1000000 etc, then a simple if/else is probably faster and cleaner.