Поскольку это инициализатор структуры, вы не можете использовать его для инициации структуры в выражении, кроме ее объявления.
Это определено в моей системе следующим образом:
#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}
Расширив и использовав, мы видим:
pthread_cond_t p = PTHREAD_COND_INITIALIZER; // << ok!
p = PTHREAD_COND_INITIALIZER; // << compiler error =\
То есть
p = PTHREAD_COND_INITIALIZER;
расширяется до:
p = {_PTHREAD_COND_SIG_init, {0}};