Welcome in the forum.
const uin8 MajorVersion = 1;
const uint8 MinorVersion = 0x04;
or similar. Both of these values will be allocated in flash.
Hm ok, but it's not clear for me how fix the flash memory location inside the program, i dislike the way to do it through linker.. And i m not sure to be sure that this will not be override.
I have a little to much my mind PIC oriented i think :/
Imho there is no need to fix the location of the program version to a defined address. The version is fixed to the name of a variable or struct or whatever you choose.
Then i don't see how i can read it with a Pickit 3 programmer :(