Using uVision 5.12.0.0 (ARM) I need my variables to be placed in the order I declare them. But when I look at the map-file they are not. The types I use are unsigned) char, (unsigned) int, and arrays of these types.
Question 1: How are variables placed in memory? Question 2: How can I control the order, there is no #pragma ORDER (as was in C166)? Question 3: Any alternatives, besides placing them in a structure?
Thanks.
Sorry, I'm not sure how they are ordered, but have you checked if the compiler rearranges them to maintain alignment without excess padding? And are you sure the compiler did rearrange the order and did not just add padding?
Having an int, a char and an int after each other would require three bytes of padding to get the second int properly aligned.
Yes, this isn't just passing, I'm using the pack-pragma to prevent this. And when padding is added to maintain alignment this only inserts bytes between variables, it doesn't rearrange them.