我在老虎身上使用xcode 2.4.1。当我在下面做的一切都很好。当我做的时候
pthread_mutex_t mute;
ImageMan()
{
dibSize=0;
mute = PTHREAD_MUTEX_INITIALIZER;
}
我得到了这两个错误
error: expected primary-expression before '{' token
error: expected `;' before '{' token
我不知道为什么。但是,如果我做pthread_mutex_t静音= PTHREAD_MUTEX_INITIALIZER;它工作正常。为什么呢?
CNC中 我没有运行它,但这似乎编译。为什么?啊?
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
mute = mutex;
答案 0 :(得分:16)
PTHREAD_MUTEX_INITIALIZER
是一个常量初始值设定项,仅在初始化时有效。它是一个宏,不一定会扩展为整数类型。
您的mute=mutex;
无效 - 您应该使用:
pthread_mutex_init(&mute, NULL);
或者如果您动态分配互斥锁:
m = malloc(sizeof(pthread_mutex_t)));
pthread_mutex_init(m, NULL);
答案 1 :(得分:2)
mute = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;
这是此错误的另一种解决方案。