Something like this should do the trick:
#define WRITE_TO_0X10000(v) (*((char *)0x10000) = (char)(v))
You didn't defined what kind of value should be written, I supposed that a byte is to be written. The macro does the following :
- convert the value 0x10000 to a pointer to char
((char *)0x10000)
- force the value to be a char (8-bits)
((char)(v))
- write the value to the memory pointed
*pointer = value
Another possibility is:
#define POINTER_TO_0x10000 ((char *)0x10000)
*POINTER_TO_0X10000 = some_char_value
You can easily adapt to any other type you need.