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()的后面,才造成了这种错误。

posted on 2011-04-23 16:10  codmer  阅读(402)  评论(0编辑  收藏  举报