遇到的C语言代码如下:
struct link
{
int data;
struct link* next;
}
sum(struct link* head)
{
struct link* p;
int s = 0;
p = head->next;
while (p) { s += p->data; p = p->next; }
return s;
}
main()
{
struct link p = { 10, &p };
struct link* head = &p;
sum(head);
}
sum函数在main()函数前定义,则会对sum函数报错,认为sum函数返回值为struct link类型,明明返回类型是int类型,但是将sum函数放在main()函数之后定义,则一切正常,sum函数被认定了返回值为int类型。
struct link
{
int data;
struct link* next;
}
main()
{
struct link p = { 10, &p };
struct link* head = &p;
sum(head);
}
sum(struct link* head)
{
struct link* p;
int s = 0;
p = head->next;
while (p) { s += p->data; p = p->next; }
return s;
}
代码如上所示,写成这样,将sum函数在main主函数之后定义则不会出现错误,会将sum函数认定返回int类型的函数,使用工具为visual studio 2019。