C 中的古怪错误提示
在一源文件中定义了如下两个函数
使用倒插法,向链表中添加结点
1: /*插入元素,倒插法,新插入的元素为表的第一个元素*/
2: void ds_insertFirst(ds_link_head * pHead,int elem) {
3: struct ds_link_node * temp ;
4: struct ds_link_node * node ;
5: node = ds_createNode(elem) ;
6: /*将新生成的结点插入到头结点后*/
7: temp = pHead->next ;
8: pHead->next = node ;
9: node->next = temp ;
10: }
生成一个新的结点
1: /*生成一个新的结点*/
2: struct ds_link_node * ds_createNode(int elem) {
3: struct ds_link_node * temp ;
4: temp = (struct ds_link_node *)malloc(sizeof(struct ds_link_node)) ;
5: if(!temp)
6: exit(0) ;
7: temp->data = 10;
8: temp->next = NULL ;
9: return temp ;
10: }
编译时出现如下提示:
warning C4013: 'ds_createNode' undefined; assuming extern returning int
warning C4047: '=' : 'ds_link_node *' differs in levels of indirection from 'int'
error C2040: 'ds_createNode' : 'ds_link_node *(int)' differs in levels of indirection from 'int ()'
所有想到的可能错的地方都修改了一遍还是没啥效果。最后实在没法了,我就把文件的扩展名该成了.cpp(原来的是.c),编译了一下。
error C3861: 'ds_createNode': identifier not found
这句看懂了,找不到ds_createNode的标识符。再一仔细看程序,原来在函数ds_insertFirst()中调用了ds_createNode(),但是在ds_insertFirst()的前面并没有
声明函数ds_createNode(),而且ds_createNode()的定义也在ds_insertFirst()的后面,才造成了这种错误。