我正在通过传递他们的结构和运行到一些问题通过创建pthreads我的方式。用下面的代码,我可以把一个整数集到结构,然后在线程中使用它们:通过结构传递动态数组pthreads通过结构
struct v{
int i;
int j;
};
void* update(void* param);
int main(int argc, char* argv[]){
...
int j = 2;
int i = 1;
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
struct v *argument = (struct v*)malloc(sizeof(struct v));
argument->i = i;
argument->j = j;
pthread_create(&tid, &attr, update, argument);
...
pthread_join(tid, NULL);
return 0;
}
void* update(void* arg){
...
struct v * argument = (struct v*) arg;
int j = argument->j;
int i = argument->i;
cout << j << ' ' << i << endl;
}
不幸的是,我似乎不能够动态数组添加到结构。我知道动态数组不能在main()之前声明的结构中工作,但即使使用指针,我似乎也无法获得编译代码。在main()中,我添加了这些行:
int arr[i][j];
下面
argument->j = j;
我说:
argument.current = arr;
我改变了结构到:在
struct v{
int i;
int j;
int *ray;
};
随着更新功能,我有:
int * curr = argument->ray;
当我编译时,我得到一个错误信息“请求成员'ray'在'参数',它是非类类型'v *'”。
我是否会通过这种方式添加这个动态数组而导致错误的路径?
我很感激任何人都可以提供的帮助。
在'argument.current = arr;',什么是'current'?一个错字? – johnchen902
C++中不允许使用可变长度数组。 –
除非有非常好的理由否则,只需使用'std :: vector ray;'。 –