我尝试在我的代码中添加一个节,它可以在取消情况下解锁互斥锁。这可能发生并会导致死锁。因此我试着添加pthread_cleanup_push(cleanup_unlock_mutex, &mutex_ftdi);
,但是这行代码从我添加它直到代码文件结束的行中导致语法错误。如果我对代码行进行注释,那么程序将无误地编译。 我做错了什么?pthread_cleanup_push导致语法错误
void cleanup_unlock_mutex(void *p){
pthread_mutex_unlock(p);
}
....... }else{
for(unsigned count=0; count <= number_of_requests; count++){
pthread_cleanup_push(cleanup_unlock_mutex, &mutex_ftdi);
pthread_mutex_lock(&mutex_ftdi);
process_requests(count, numberofthread);
pthread_mutex_unlock(&mutex_ftdi);
}
} // compiler error: error: expected ‘while’ before ‘}’ token
..........
文件中的所有其他函数都会收到警告:ISO C禁止嵌套函数[-pedantic]。
'}'错过。你可以首先缩进代码吗?奇怪!!!! 'else'没有'if'? 'while'循环在哪里?发布整个代码。 –
没有别的奇怪,但我不想发布代码的if部分。代码完美。如果我添加'pthread_cleanup_push(cleanup_unlock_mutex,&mutex_ftdi)'这一行;'它不再可编译。如果评论这条线或删除它一切正常。但是我找不到任何错误,并且我不删除或添加任何''' –
'但我不想发布代码的if部分.'如果你不想要任何人不想给你答案。 –