概述
初始化pthread_mutex_t变量的问题?????
我在linux下编译如下代码系统提示:parse error?
下面是我的代码:
pthread_mutex_t m_mutex;
m_mutex = PTHREAD_MUTEX_INITIALIZER;
我是用c++写的,如果在c下就没问题。这是为什么??
答案:
在进行 Posix thread 编程时,出现以下编译错误:
error: expected expression before ‘{’ token
出现错误的语句为 products.lock = PTHREAD_MUTEX_INITIALIZER;
查了一下,在 pthread.h 中, PTHREAD_MUTEX_INITIALIZER 定义为:
# define PTHREAD_MUTEX_INITIALIZER
{ { 0, 0, 0, 0, 0, 0, { 0, 0 } } }
原因应该比较清楚了,结构体的初始化问题。PTHREAD_MUTEX_INITIALIZER 用在静态类型的互斥量中,而且应该在互斥量定义的时候就用 PTHREAD_MUTEX_INITIALIZER 进行初始化,否则用 pthread_mutex_init 进行初始化。
我知道了,因为在类的变量成员中m_mutex = PTHREAD_MUTEX_INITIALIZER;是不被允许的。
如果作为类成员,pthread_mutex_t是一个结构,必须使用如下声明方法:
pthread_mutex_t m_mutex;
pthread_mutex_init(&m_mutex,NULL);
PTHREAD_MUTEX_INITIALIZER是一个常量
struct super
{
int i;
int j;
};
struct super a={0,0};//正确
struct super a;
a={0,0};//错误
最后
以上就是包容寒风为你收集整理的初始化pthread_mutex_t变量的问题的全部内容,希望文章能够帮你解决初始化pthread_mutex_t变量的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复