Not Keil specific; one for the 'C' experts:
Why would one put 'static' variables definitions in a header?
eg, in a header file:
/* * TCO count to temperature conversion table. */ static erTcoTableStruct tcoTableOPUS1[] = { /*{TCO,Temp,} */ {1,-99}, {4,-45}, {5,-40}, {8,-35}, {11,-30}, {16,-25}, {22,-20}, {29,-15}, {37,-10}, {48,-5}, {61,0}, {78,5}, {99,10}, {124,15}, {153,20}, {188,25}, {227,30}, {270,35}, {315,40}, {365,45}, {420,50}, {481,55}, {549,60}, {625,65}, {710,70}, {805,75}, {910,80}, {1010,85}, {1060,88} };
AIUI, the whole point of so-called "header" files in 'C' is to share stuff between source files;
But the whole point of the 'static' keyword (at file scope) in 'C' is to make stuff private so that it is not visible to other modules - ie, not shared.
So I can't see why one would want to have 'static' definitions in a header?!
Back to my original question (again):
Perhaps the author had been exposed to something like that captain's "all data outside functions must be in headers" - but not quite understood it?
So the code in question could actually be some half-baked implementation of a semi-understood scheme.
Which brings us back to the earlier conclusion that the author(s) really didn't know what he/she/they were doing!
Either that or an implementation of a half baked scheme. As seen earlier in this thread there's a common misconception that include files have some special properties understood by 'the system'. It's understandable - the fact they usually have the extension .h rather than .c could easily give that impression.