title: Function like macros returning a value
body: <p>Recently came across following examples which returns a register read __ret but without a return statement</p>
  
  <pre><code>#define READWORD(offset)       ({ \
                   unsigned short __ret=0;\
                   __ret = readw(offset);\
                   __ret; \
                   })
  </code></pre>
  
  <p>Did Google on the same and found that function like macros can return value. Is it safe to assume that last statement "_<em>ret" is equivalent to returning a value?
  What if i have another statement after "</em>_ret" which changes __ret value. Which one would get returned?</p>