标题:如何写一个头文件,使它包含多个c源程序需要用到的变量或者函数?
只看楼主
前往企鹅屋
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2017-10-9
结帖率:100%
已结贴  问题点数:7 回复次数:3 
如何写一个头文件,使它包含多个c源程序需要用到的变量或者函数?
以下是对链表的各种操作的程序,我把创建程序写在另一个c源程序里,定义在main()所在的程序里的worker *head只能在这个c源程序里能用,所以在网上看到可以写一个
头文件把这个worker *head以及对应的结构体struct worker{};放在里面,这样是不是能够在不同的c源程序中使用head,以及用worker 在不同的c源程序中定义worker类型
的指针了???没写过头文件 不知道如何下手。。。
#include"stdio.h"
#include"string.h"
void create();
struct worker
{
    int num;
    int wage;
    struct worker *next;
};
struct worker *head;
void display()
{
    worker *p=head;
    while(p->next !=NULL)
    {
        printf("编号:%d 工资:%d\n",p->num ,p->wage );
        p=p->next ;
    }
    //printf("编号:%d 工资:%d\n",p->num ,p->wage);
}
void insert()
{
    worker *p=head,*p1;
    printf("请输入要插入的节点信息:\n");
    p1=new worker;
    scanf("%d%d",&p1->num,&p1->wage);
    if(p->num >p1->num )
    {head=p1;p1->next=p;}
    else
    {
        bool flag=false;
        while(p->next->next !=NULL)
        {
            if(p->next->num >p1->num )
            {
                p1->next =p->next;
                p->next=p1;
                flag=true;
                break;
            }
            else
                p=p->next ;
        }
            if(flag==false)
            {
                p->next  =p1;
                p1->next =NULL;
            }
    }
    //return head;
}
void del()
{
    int num;
    worker *p=head;
    printf("请输入想要删除的节点:\n");
    scanf("%d",&num);
    if(p->num ==num)
        head=p->next ;
    else
    {
        bool flag=false;
        while(p->next->next !=NULL)
        {
            if(p->next->num ==num)
            {
                p->next =p->next->next ;
                flag=true;
                break;
            }
            else
                p=p->next ;
        }
        if(flag==false)
        {
            if(p->next->num ==num)
                p->next =NULL;
            else
                printf("未找到该节点!\n");
        }
    }
    //return head;
}
void main()
{
    //worker *head;
       create();
    display();
    insert();
    display();
    del();
    display();
}
以下是create函数
void create()
{
    worker *p1,*p2;
    head=p2=p1=new worker;
    printf("请输入信息:\n");
    scanf("%d%d",&p1->num ,&p1->wage );
    p1->next =NULL;
    while(p1->num !=0)
    {
        p1=new worker;
        scanf("%d%d",&p1->num ,&p1->wage );
        p2->next =p1;
        p2=p1;
    }
    p2->next =NULL;
    //return head;
两个c源程序放在一个工程下,连接的时候报错
搜索更多相关主题的帖子: 源程序 head num next NULL 
2017-10-16 21:11
前往企鹅屋
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2017-10-9
得分:0 
我试着写了一个头文件
#ifndef __TEST_H__
#define __TEST_H__
void create();
struct worker
{
    int num;
    int wage;
    struct worker *next;
};
struct worker *head;
#endif
把结构体worker和结构体指针head定义在头文件里,让后让main()所在的源程序和create程序中都包含这个头文件,编译通过,链接的时候报错
"struct worker * head" (?head@@3PAUworker@@A) already defined in lianbiao_02_1.obj
求解啊
2017-10-17 10:11
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:7 
你把2个程序的代码都发出来   

DO IT YOURSELF !
2017-10-17 14:37
前往企鹅屋
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2017-10-9
得分:0 
回复 2楼 前往企鹅屋
cretae函数在单独的一个cpp文件里边,main函数坐在的程序在另外一个cpp里边
2017-10-17 19:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481478-1-1.html




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

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