print_once, ¿en qué sentido de bloque funciona?

Estoy tratando de entender implementar una función de imprimir una vez, este código funciona bien; Pero no puedo entender algunas cosas: 1) ¿Qué tan en bloque funciona esto? Tal vez no pueda borrarlo correctamente, pero solo quiero saber qué propiedad deC ¿Haz que pase?

  1 #include <stdio.h>
  2 
  3 #define _TRACE_
  4 
  5 #ifdef _TRACE_
  6 #define print_once(fmt, ...)            \
  7 ({                                      \
  8      static bool __print_once=false;           \
  9      if(!__print_once)    {               \
 10          __print_once = true;           \
 11          do  {                               \
 12             printf(fmt, ##__VA_ARGS__);   \
 13         }while(0);                          \
 14      }                                  \
 15 })
 16 #else
 17 #define print_once(fmt, ...)    \
 18 printf("\n");                   
 19 #endif
 20 
 21 void func()
 22 {
 23     print_once("func\n");
 24 }
 25 int main(int argc, char* argv[])
 26 {
 27     print_once("test1\n");
 28     //:w
 29     print_once("test22\n");
 30     for(int i =0; i < 2; i++)
 31         print_once("loop\n");
 32     func();
 33     func();
 34     return 0;
 35 }

Respuestas a la pregunta(1)

Su respuesta a la pregunta