| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:急!!!连接不上头文件函数!
只看楼主 加入收藏
逆丶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-18
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:4 
急!!!连接不上头文件函数!
main.c文件
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"

#define MAX 50
void showmovies(Item item);

int main(void)
{
    List movies;
    Item temp;

    InitializeList(&movies);
    if(ListIsFull(movies))
    {
        fprintf(stderr,"没有内存可用!\n");
        exit(1);
    }
    puts("输入第一个电影名称:");
    while(gets(temp.title)!=NULL && temp.title[0]!='\0')
    {
        puts("输入电影的等级<0-10>");
        scanf("%d",&temp.rating);
        while(getchar()!='\n')
            continue;
        if(AddItem(temp,&movies)==false)
        {
            fprintf(stderr,"分配内存问题\n");
            break;
        }
        if(ListIsFull(movies))
        {
            puts("这个列表已满");
            break;
        }
        puts("输入第一个电影名称:");
    }

    if(ListIsEmpty(movies))
        printf("没有数据输入.");
    else
    {
        printf("这是电影名单:\n");
        Traverse(movies,showmovies);
    }
    printf("你输入 %d 级的电影.\n",ListItemCount(movies));
    EmptyTheList(&movies);
    printf("退出程序!\n");
    return 0;
}

void showmovies(Item item)
{
    printf("电影:%s 等级:%d\n",item.title,item.rating);
}


list.c文件
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include "list.h"

static void CopyToNode(Item item,Node * pnode);

/*接口函数*/
/*把列表设置为空列表*/
void InitializeList(List * plist)
{
    * plist = NULL;
}

bool ListIsEmpty(const List * plist)
{
    if(*plist == NULL)
        return true;
    else
        return false;
}

bool ListIsFull(const List * plist)
{
    Node * pt;
    bool full;

    pt = (Node *)malloc(sizeof(Node));
    if(pt == NULL)
        full=true;
    else
        full=false;
    free(pt);
    return full;
}
/*返回节点数*/
unsigned int ListItemCount(const List * plist)
{
    unsigned int count = 0;
    Node * pnode = *plist;

    while(pnode != NULL)
    {
        ++count;
        pnode = pnode->next;
    }
    return count;
}

bool AddItem(Item item,List * plist)
{
    Node * pnew;
    Node * scan = * plist;
    pnew = (Node *)malloc(sizeof(Node));
    if(pnew==NULL)
        return false;

    CopyToNode(item,pnew);
    pnew->next = NULL;
    if(scan == NULL)
    * plist = pnew;
    else
    {
        while(scan->next != NULL)
            scan = scan->next;
        scan->next = pnew;
    }
    return true;
}

void Traverse (const List * plist,void (* pfun)(Item item))
{
    Node * pnode = *plist;
    while(pnode!=NULL)
    {
        (*pfun)(pnode->item);
        pnode=pnode->next;
    }
}

void EmptyTheList(List * plist)
{
    Node * psave;
    while(*plist != NULL)
    {
        psave = (*plist)->next;
        free(*plist);
        *plist=psave;
    }
}

static void CopyToNode(Item item,Node * pnode)
{
    pnode->item=item;
}

list.h文件
程序代码:
#ifndef LIST_H_
#define LIST_H_

#include <stdbool.h>
#define TSIZE 45
struct film
{
    char title[TSIZE];
    int rating;
};

typedef struct film Item;

typedef struct
{
    Item item;
    struct node * next;
} Node;

typedef Node * List;
/*函数原型*/
/*操作:初始化一个列表*/
/*操作前:plist指向一个列表*/
/*操作后:该列表被初始化为空列表*/
void InitializeList(List * plist);
/*操作:确定列表是否为空列表*/
/*操作前:plist指向一个已初始化的列表*/
/*操作后:如果该列表为空则返回true;否则返回false*/
bool ListIsEmpty(const List * plist);
/*操作:确定列表是否已满*/
/*操作前:plist指向一个已初始化的列表*/
/*操作后:如果该列表已满返回true;否则返回false*/
bool ListIsFull(const List * plist);
/*操作:确定列表中项目的个数*/
/*操作前:plist指向一个已初始化的列表*/
/*操作后:返回该列表中项目的个数*/
unsigned int ListItemCount(const List * plist);
/*操作:确定列表中项目的个数*/
/*操作前:item是要被增加到列表的项目
          plist是指向一个初始化的列表*/
/*操作后:如果可能的话,在列表尾部增加一个新项目
          函数返回true;否则返回false*/
bool AddItem(Item item,List * plist);
/*操作:把一个函数作用于列表中的每个项目*/
/*操作前:plist指向一个已初始化的列表
         pfun指向一个函数,该函数接受一个Item参数并且无返回值*/
/*操作后:pfun指向的函数被作用到,列表中的每个项目一次*/
void Traverse (const List * plist,void (*pfun)(Item item));
/*操作:释放已分配的内存(如果有)*/
/*操作前:plist 指向一个已初始化的列表*/
/*操作后:为该列表分配的内存已被释放,并且该列表被置为空列表*/
void EmptyTheList(List * plist);
#endif

obj\Debug\main.o||In function `main':|
\Structure\main.c|14|undefined reference to `InitializeList'|
\Structure\main.c|15|undefined reference to `ListIsFull'|
\Structure\main.c|27|undefined reference to `AddItem'|
\Structure\main.c|32|undefined reference to `ListIsFull'|
\Structure\main.c|40|undefined reference to `ListIsEmpty'|
\Structure\main.c|45|undefined reference to `Traverse'|
\Structure\main.c|47|undefined reference to `ListItemCount'|
\Structure\main.c|48|undefined reference to `EmptyTheList'|
||=== 已完成构建: 8 个错误, 0 个警告 ===|

[ 本帖最后由 逆丶 于 2012-3-10 23:40 编辑 ]
搜索更多相关主题的帖子: 函数 
2012-03-10 23:37
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:10 
第二个是list.cpp吧

用心做一件事情就这么简单
2012-03-10 23:39
逆丶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-18
收藏
得分:0 
回复 2楼 小鱼儿c
唔,cpp?
该咋解决呢?~~~
改成了cpp后
出现了这样的错误

||warning: command line option "-std=c99" is valid for C/ObjC but not for C++|
\Structure\list.cpp||In function 'unsigned int ListItemCount(Node* const*)':|
\Structure\list.cpp|44|error: cannot convert 'node*' to 'Node*' in assignment|
\Structure\list.cpp||In function 'bool AddItem(Item, Node**)':|
\Structure\list.cpp|64|error: cannot convert 'node*' to 'Node*' in assignment|
\Structure\list.cpp|65|error: cannot convert 'Node*' to 'node*' in assignment|
\Structure\list.cpp||In function 'void Traverse(Node* const*, void (*)(Item))':|
\Structure\list.cpp|76|error: cannot convert 'node*' to 'Node*' in assignment|
\Structure\list.cpp||In function 'void EmptyTheList(Node**)':|
\Structure\list.cpp|85|error: cannot convert 'node*' to 'Node*' in assignment|
||=== 已完成构建: 5 个错误, 1 个警告 ===|

[ 本帖最后由 逆丶 于 2012-3-10 23:46 编辑 ]
2012-03-10 23:43
逆丶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-18
收藏
得分:0 
搞定了。应该加&~
2012-03-11 00:11
ok632767947
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-11-27
收藏
得分:0 
楼主最后是怎么改的?
为什么我的还是不对那?
2012-11-27 17:19
快速回复:急!!!连接不上头文件函数!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018650 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved