Fonction comme les macros de retourner une valeur

Récemment est venu à travers les exemples suivants, qui renvoie un registre de lecture __ret mais sans une instruction de retour

#define READWORD(offset)       ({ \
                 unsigned short __ret=0;\
                 __ret = readw(offset);\
                 __ret; \
                 })

L'a fait Google sur le même et a révélé que la fonction comme les macros peuvent retourner de valeur. Est-il sûr de supposer que la dernière instruction "_ret" est équivalent à retourner une valeur?
Que faire si j'ai une autre déclaration après "
_ret" qui change __ret valeur. Ce qui ferait de retour?

OriginalL'auteur pkumarn | 2013-05-17