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. просто скобки, разницы нет
Обсуждают сегодня