【发布时间】:2019-09-24 01:41:05
【问题描述】:
我正在尝试在函数中初始化互斥体数组和条件变量。 该数组是我定义的 Cell 类型,每个 Cell 包含互斥锁、条件变量和字符。 我在 intiail_circle 的 for 循环内的 3 行上遇到错误:
expected expression before ‘{’ token.
我也尝试在函数之外初始化数组,但没有帮助。任何想法是什么原因造成的?
代码:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
#define num_of_cells (2*(2*N - 2))
typedef struct Generator{
pthread_t tid;
int id;
}Genarator;
typedef struct Car{
pthread_t carId;
int location ,GenID,num_of_steps;
}Car;
typedef struct Cell{
char val;
pthread_mutex_t mutex;
pthread_cond_t cond;
}Cell;
Cell circle[num_of_cells];
Cell generators_location[4];
struct Generator *generators[4];
int main(){
initial_circle();
}
void initial_circle(){
int i;
for(i = 0; i < num_of_cells; i++){
circle[i].mutex = PTHREAD_MUTEX_INITIALIZER;
circle[i].cond = PTHREAD_COND_INITIALIZER;
circle[i].val = ' ';
}
}
【问题讨论】:
-
Genarator?你是说Generator? -
大声笑是的,谢谢..关于初始化的任何想法?
-
N应该是什么?如果你看一下宏展开的结果,你会得到这行:Cell circle[(2*(2*N - 2))];,在任何地方都没有任何N的定义。 -
定义为5.忘记添加了