Replacement for AVR libc ATOMIC_BLOCK macros, now for DUE and other platforms.

[the old syntax] looks like a function definition nested inside another function

I dunno. It looks like a pretty common macro structure to me; see the recent RunEvery macro, for instance. ( http://arduino.cc/forum/index.php/topic,124974.0.html ) I've seen a lot of this sort of macro in major C programs (in some ways, it adds object-oriented behavior to C):

FOR_ALL_INTERFACES(idb) {
  FOR_ALL_PACKETS_IN_Q(idb->ipQ) {
    // Blah blah blah.
  }
}

Your new syntax isn't valid in C code...
And the old form is avr-libc "standard", extending well beyond Arduino.