C++函数定义报错 的一种罕见情况:variable or field was not declared 且 “形参未定义”
C++中使用struct定义了一个结构体,在下面的函数定义中引入该类型的形参时却直接导致了该函数无法被编译器识别为函数
本人在做数据结构作业时,用C++语言定义了一个单链表的节点类型,定义时用的是struct LinkNode(){… …},接下来定义有关的基本运算时后进行编译后,编译器竟然给出了一个罕见的报错信息:variable or field was not declared,并且提示我输入的形参未定义,而且还提示该函数的返回类型是void… …
本人在网上找了一大圈,却并未找到能够解决该问题的方法,最后发现竟然是定义类别名的方法不对。
接下来我们看看具体出错的代码是怎样的:
#ifndef LINK
#define LINK
#include<iostream>
#include<stdlib.h>
using namespace std ;
struct LinkNode{
char data ;
struct LinkNode * next ;
} node ;
void InitList(node *& L){
L = (node*)malloc(sizeof(node)) ;
L -> data = '\0' ;
L -> next = NULL ;
}
//其它函数省略... ...
#endif
具体的解决办法就是在struct前面加上关键字typedef,