I definitely think the inability to properly assign the address of a variable in global space during compile time (or, at least, link time) is a bug, and I'm going to investigate that further.
The two types of memory are Program and Data memory. The CPU has a Harvard architecture, but it's possible to store data in program memory for flexibility. However, the pointers to each region are effectively non-castable for various reasons, which is why this is so complicated.
Re: It could be...
The two types of memory are Program and Data memory. The CPU has a Harvard architecture, but it's possible to store data in program memory for flexibility. However, the pointers to each region are effectively non-castable for various reasons, which is why this is so complicated.