我正在通過傳遞他們的結構和運行到一些問題通過創建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;'。 –