Let it break. For example, see what READWORD (1) does. The preprocessor inserts this: ({unsigned short __ret = 0; __ret = readw (1); __ret;})
Now we can see what it is for. We simply call the readw function with parameter (1) and assign it an unsigned short. After that, we only have the __ret line; Although the perfectly correct statement does not seem to do anything. But read on!
After the finals, everything goes beyond.
But embedding () matters. Elegantly, this is all an expression that has a __ret value. That way you can set it to varaible. This makes everything remarkably stable in macro arguments.
Does this get rid of?
source share