在windows XP cygwin环境下编译出现了一个问题
下面的代码是一个函数内的代码
{
FILE *file;
road *newr;
cross *newc1, *newc2;
char road[50];
//char cross1[50];
//char cross2[50];
//char len[50];
int ret;
int r_id, c1_id, c2_id, length;
int i;
int ll[100];
for(i = 0; i < 10; i++){
printf("%d\n", i);
road *newr = malloc(sizeof(road));
set_road(newr, i,0,0,0,0,0);
insert_road(rlist, newr);
print_road_list(rlist);
}
...
}
road类型是自定义的类型
typedef struct road_ road;
struct road_{
int id; //用于标示道路
chars_t name; //道路名字
int tailcross; //道路尾部路口的id
int headcross; //道路头部路口的id
int length; //道路长度
int area; //道路所属区域(live space, work space or others)
road_queue *rqueue; //道路容量
struct list_head list;
};
编译到这个文件时报错
当把char road[50]注释掉编译通过.
原因是自定义类型和变量的名字(这里是数组的名字)相同造成了编译错误.
因此对于自定义类型的起名需要注意
像上面的
typedef struct road_ road;
可以改为
typedef struct road_ road_t;