Hi,
it is absolutely nonsense to discuss one static array variable with two different sizes. Have you checked variables mapping and size in the map file.
If the variable is defined as
unsigned char variable[11] then it is nonsense to address variable[11]=xxx; We know that array which is defined with this has members [0]..[10].
But you have also to think about qualifier extern. It does not alocate sace. It only says that there is an object of this name defined globally somewhere.
I really suggest to use both definitions with the same size [12]. Then you will get no warning message.
BTW; extern only says that there is some object of the name defined globally somewhere. Because you use extern unsigned char value[11]; in the test.c file you will receive warning L1827 Symbol value has different size in the main.c.o (12 bytes) and test.c.o (11 bytes)
and warning
C1857 Acces out of range.
All messages are OK and in the reality there is a global array value[12] because there is a global definition of this array. If you look into debugger and you check the size of the value you will see 12 members. Also in the map file you will find 12 members.
Best regards,
Ladislav