如下代码
void visited(List); //问题出在这里
typedef struct Lnode
{
int data;
}List;
int main()
{
List *element;
element = (List*)malloc(sizeof(List));
element->data = 10;
visited(*element);
getchar();
return 0;
}
void visited(List element)
{
printf("%d", element.data);
return;
}
当我在函数声明处写 visited(List element); 时,显示下列错误
当我如上写就没有问题
这是为什么????
1、如果写成void visited(List),其实只是一句声明而已,并没有对应的函数定义,所以编译器不会报错;
2、如果写成void visited(List element),编译器认为就是对函数visited(List element)的前向声明,但是因为你的List又定义在visited函数声明的后面,所以编译器就报错了,换下位置就不会报错了,代码如下:
typedef struct Lnode
{
int data;
}List;
void visited(List element); //声明语句放到这里就不会报错了,C语言只支持前向声明
int main()
{
List *element;
element = (List*)malloc(sizeof(List));
element->data = 10;
visited(*element);
getchar();
return 0;
}
void visited(List element)
{
printf("%d", element.data);
return;
}
把你的visited声明放到struct定义下面就行了。因为声明放在前面还未定义List,所以编译器会报错。
不知道你这个问题是否已经解决, 如果还没有解决的话: