here is being used the way to declare a macro in C compilers. the compiler changes the expression POKE(addr, val) by *(volatile unsigned int *)(addr) = (val) in code which means to assign variable val to derreferenced and casted((volatile unsigned int *)) pointer addr, so on for the remains. Sorry, English is not my first idiom.