我收到此警告“警告:来自不兼容指针类型的赋值
” 在这一行中:
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?假设它与结构中定义的变量相同,您尝试将第 l 个元素(指向 int 指针的指针)的地址分配给 data1->transformed_block 的第 l 个元素(指向 int 的指针)。
data1->transformed_block[l] = &transformed_block[l];
// int* = &(int*)
你不是想简单地 SCSS 吗?
data1->transformed_block[l] = transformed_block[l];
关于c - 结构/线程内的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520584/