The subtle bug in `MIN(a, b)` is that `a` and `b` are evaluated twice, and that the parameters could be an expression that contains an operator that has an even lower precedence than `<`.

But there isn't such a possibility for such a bug in this expression.
The bug could be that PTR doesn't actually references a `TYPE::MEMBER`.

I simplified Linux' container_of, which is
```c
#define container_of(ptr, type, member) ({ \
                const typeof( ((type *)0)->member ) *__mptr = (ptr); \
                (type *)( (char *)__mptr - offsetof(type,member) );})
```
and would find such a programming error, but depends on GCC's [statement-expression](http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Statement-Exprs.html).