【发布时间】:2010-12-23 16:28:08
【问题描述】:
我有这个警告“警告:来自不兼容的指针类型的赋值
" 在这一行:
data1->transformed_block[l] = &transformed_block[l];
-
void print_message_function ( void *ptr )
{
dt *data;
data = (dt *) ptr;
printf("Dentro da thread Numero0: %ld\n", data->L_norm_NewBlock);
pthread_exit(0);
}
typedef struct data_thread
{
long L_norm_NewBlock;
int Bsize_X;
int Bsize_Y;
int *transformed_block[MAX_LEVEL];
long L_norm_OrigBlock;
} dt;
void function()
{
int *transformed_block[MAX_LEVEL];
pthread_t thread1;
dt *data1;
pthread_attr_t attr;
pthread_attr_init(&attr);
//Fills structure
data1 = (dt *) malloc(sizeof(dt));
data1->transformed_block[l] = &transformed_block[l];
data1->L_norm_NewBlock=0;
data1->Bsize_Y = Bsize_Y;
data1->Bsize_X = Bsize_X;
pthread_create(&thread1, &attr, (void *) &print_message_function, (void *) &data1);
}
我想摆脱那个警告,我在线程中得到的值是错误的。例如data1->L_norm_NewBlock=0;在线程中给了我一个不同的值(不是应该的 0 )。
【问题讨论】:
-
请使用 {} 按钮格式化您的代码。
-
我不知道transformed_block(不在结构中的那个)是在哪里声明的。是全球性的吗?它是什么类型的?
标签: c multithreading pointers data-structures pthreads