gpt4 book ai didi

c - 访问函数 pthread 中的结构变量

转载 作者:行者123 更新时间:2023-11-30 20:48:42 25 4
gpt4 key购买 nike

访问 pthread_creation 调用的函数中的结构变量的正确方法是什么。这就是我正在尝试做的事情

void *add_first_quat(void *a){
struct thread1Struct *myArray = (struct thread1Struct *)a;
int i ;
for(i= *myArray>start; i < *myArray>end; i++){
sum+= *myArray>th1Array[i];
}

/* the function must return something - NULL will do */
return NULL;
}

在我的结构中,我定义了两个变量和指向全局定义数组的指针

struct thread1Struct{

int start = 0;
int end = 25;

int *th1Array = myArray;

};

这就是我调用 pthread_create 函数的方式

(pthread_create(&inc_first_quater_thread, NULL, add_first_quat, (void*) &th1StrObj))

为什么我的代码不起作用?我收到以下错误

main.c: In function ‘add_first_quat’:
main.c:14:9: error: dereferencing pointer to incomplete type
for(i= *myArray>start; i < *myArray>end; i++){
^
main.c:14:18: error: ‘start’ undeclared (first use in this function)
for(i= *myArray>start; i < *myArray>end; i++){
^
main.c:14:18: note: each undeclared identifier is reported only once for each function it appears in
main.c:14:29: error: dereferencing pointer to incomplete type
for(i= *myArray>start; i < *myArray>end; i++){
^
main.c:14:38: error: ‘end’ undeclared (first use in this function)
for(i= *myArray>start; i < *myArray>end; i++){
^
main.c:15:9: error: dereferencing pointer to incomplete type
sum+= *myArray>th1Array[i];
^
main.c:15:18: error: ‘th1Array’ undeclared (first use in this function)
sum+= *myArray>th1Array[i];
^
main.c: At top level:
main.c:34:12: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
int start = 0;
^

最佳答案

第一个问题(语法):

尝试 myArray->start(*myArray).startmyArray[0].start。在这种情况下,第一种语法是我的偏好。

第二个问题:

dereferencing pointer to incomplete type

在引用任何字段之前,您需要提供完整的声明。通过将结构体的完整声明移动到代码文件的顶部来解决问题,或者将其放入 .h 文件中,您在所有源文件中#include使用该结构。

关于c - 访问函数 pthread 中的结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33038188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com