keil 中结构体和指针的问题……
自己写了一个迷宫的游戏,想用双色点阵模拟出探路经过……然后……定义了这样一个结构体:structLattice{intx;inty;intwallflag;intdirf...
自己写了一个迷宫的游戏,想用双色点阵模拟出探路经过……
然后……
定义了这样一个结构体:
struct Lattice
{
int x;
int y;
int wallflag;
int dirflag;
int step;
};
//////////// Lattice operations /////////////////////
一个函数(参数里有个这个结构体的指针):
void LatticeInit(Lattice* Lat, int xx = 0, int yy = 0, int wall = 0, int stepNum = 0)
{
Lat->x = xx;
Lat->y = yy;
Lat->wallflag = wall;
Lat->dirflag = EAST;
Lat->step = 0;
}
编译的时候报错:
双色点阵双色交替动态显示.C(30): error C141: syntax error near '*', expected ')'
双色点阵双色交替动态显示.C(32): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(33): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(34): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(35): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(36): error C202: 'Lat': undefined identifier
还有其他的结构体都这样。。。。。
刚开始用c++写的,在vc6.0里改成了C的正常运行,放keil里报错,不知道怎么回事……小弟刚刚开始学习单片机滴……大虾们不吝赐教啊!? 展开
然后……
定义了这样一个结构体:
struct Lattice
{
int x;
int y;
int wallflag;
int dirflag;
int step;
};
//////////// Lattice operations /////////////////////
一个函数(参数里有个这个结构体的指针):
void LatticeInit(Lattice* Lat, int xx = 0, int yy = 0, int wall = 0, int stepNum = 0)
{
Lat->x = xx;
Lat->y = yy;
Lat->wallflag = wall;
Lat->dirflag = EAST;
Lat->step = 0;
}
编译的时候报错:
双色点阵双色交替动态显示.C(30): error C141: syntax error near '*', expected ')'
双色点阵双色交替动态显示.C(32): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(33): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(34): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(35): error C202: 'Lat': undefined identifier
双色点阵双色交替动态显示.C(36): error C202: 'Lat': undefined identifier
还有其他的结构体都这样。。。。。
刚开始用c++写的,在vc6.0里改成了C的正常运行,放keil里报错,不知道怎么回事……小弟刚刚开始学习单片机滴……大虾们不吝赐教啊!? 展开
3个回答
展开全部
void LatticeInit(Lattice* Lat, int xx = 0, int yy = 0, int wall = 0, int stepNum = 0)
在这一行上结构体名前加上struct,
改为void LatticeInit(struct Lattice* Lat, int xx , int yy , int wall , int stepNum )
就可以了,因为在C中(C++可以),必须用struct +自定义标识符表示结构体,或者typedef 一下也行。 C也不支持默认形参。
在这一行上结构体名前加上struct,
改为void LatticeInit(struct Lattice* Lat, int xx , int yy , int wall , int stepNum )
就可以了,因为在C中(C++可以),必须用struct +自定义标识符表示结构体,或者typedef 一下也行。 C也不支持默认形参。
展开全部
typedef struct
{
int x;
int y;
int wallflag;
int dirflag;
int step;
}Lattice;
这么定义试试
{
int x;
int y;
int wallflag;
int dirflag;
int step;
}Lattice;
这么定义试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言支持默认形参吗。
追问
试过了,去掉还是一样的……
追答
没学过单片机,提示什么错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询