g_atomic_int_dec_and_test(atomic) \                                     
                  
                  
                    ({                                         \
                  
                  
                      (void) (0 ? *(atomic) ^ *(atomic) : 0);  \  
                  
                  
                      __sync_fetch_and_sub ((atomic), 1) == 1; \  
                  
                  
                    })
                  
                  
                  
                  
                  
                  int
                  
                  
                  (g_atomic_int_dec_and_test) (volatile int *atomic)                             
                  
                  
                  {                                                                               
                  
                  
                     return g_atomic_int_dec_and_test (atomic);
                  
                  
                  }
                  
                  
                  
                  
                  
                  это кусок из glib-2.0. Т.е. чистый С, не плюсы.
                  
                  
                  
                  
                  
                  Непонятого:
                  
                  
                  1. объявление имени функции в скобках. Впервые сталкиваюсь.
                  
                  
                  2. return ({ stmt_a; stmt_b; ... stmt_n; }). Подозреваю что возвращается результат последнего выражения. Но тоже необычный синтаксис.
                  
                  
                
это расширение гццшное
1. просто скобки, разницы нет
Обсуждают сегодня