我收到以下编译错误:request for member ‘threeds’ in something not a structure or union
这是我的结构:
struct pthread_arg {
int size;
int threeds;
int the_threads;
};
以下是导致问题的一行:
int first = *(arg.threeds) * N/number_of_the_threads;
我已经在这里查看了其他类似的问题,但在建议更改后仍然会出现相同的错误。
答案 0 :(得分:3)
看起来arg
是一个传递给线程函数的句子(它是指向你的struct的指针)。
在这种情况下,您无法直接取消引用arg
,因为它是void*
。将其转换为适当的类型(必须与传递给pthread_create API的参数匹配),然后使用:
void *multiplication(void *arg)
{
struct pthread_arg *myarg = arg;
int first = myarg->threeds * N/number_of_the_threads;
...