初始化pthread_mutex_t变量的问题
来源:互联网 发布:月薪一万 知乎 编辑:程序博客网 时间:2024/06/10 21:26
我在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的初始化
- pthread_mutex_t的静态初始化
- 关于pthread_mutex_t的初始化
- 关于pthread_mutex_t的初始化
- pthread_mutex_t的静态初始化
- 【转】关于pthread_mutex_t的初始化
- C++ 静态变量初始化(static pthread_mutex_t 初始化)
- 变量初始化的问题
- 变量的初始化问题
- 初始化变量的问题
- 【pthread系列-9】pthread_mutex_t的静态初始化
- linux下pthread_mutex_t 对象的初始化
- Vb6的变量初始化问题
- [ java ] 变量的初始化问题!
- java初始化变量的问题
- JAVA 变量的初始化问题
- 成员变量初始化的问题
- 程序员笑话
- 不用alert弹出窗口的方法来显示验证信息
- 汉诺塔 简化版 c++
- 【杂牌互联网产品观察员的一天】没干什么,终身大事来了——只关注了魅族!
- 密码文件的恢复 || EM登录失败的解决
- 初始化pthread_mutex_t变量的问题
- C#无闪烁绘图方法
- sprintf()--字串格式化命令
- Oracle表连接与子查询示例
- 单片机应用编程技巧
- Java基础之语句
- cgi重定向的方法
- Android隐藏软件盘
- iOS的主要框架介绍