2 freedom wings5 freedom_wings5 于 2016.04.01 20:26 提问

c语言,没定义同名函数,包含头文件时却说重定义了,请大神看看

头文件EnforceJoseph.h

 #include<stdio.h>
#include<stdlib.h>

struct Node
{
    int password;
    int peopleOfNumber;
    Node *next;
};

Node *first;
Node *last;


//用于遍历约瑟夫环的函数,传入的形参第一个为首地址,第二个是初始上限值
bool Enforce(Node *node, int m)
{
    Node *p = node;
    Node *q = p;
    if ((*p).next == p) return true;
    int i = 0;
    for (; i < m; i++)
    {
        p = (*p).next;
        if (i == 0) continue;
        q = (*q).next;
    }
    m = (*p).password;
    printf("出列的人为:%d", (*p).peopleOfNumber);
    (*q).next = (*p).next;
    free(p);
    Enforce((*q).next, m);
    return true;
}

//建立一个只有一个结点的链表
void setup()
{
    first =(Node *) malloc(sizeof(Node));
    last = first;
    (*last).next = first;
}

//向链表添加数据
void add(int password, int numberOfPeople)
{
    Node *p;
    if (last == first)
    {
        p = first;
    }
    else  p = (Node *)malloc(sizeof(Node));
    (*p).password = password;
    (*p).peopleOfNumber= numberOfPeople;
    (*p).next = first;
    last = p;
}

bool checkIfNull()
{
    Node *q = (*first).next;
    if (((*first).next == first) || (*q).next == first)
        return false;
    else return true;
}

void begin(int m)
{
    Enforce(first, m);
}

下面是包含该头文件的,main函数所在的文件"源.cpp":

 #include<stdio.h>
#include<string.h>
#include "EnforceJoseph.h"


int m;
int pass;
int num;
char yOrN[3];
int main()
{
    void start();
    start();
    system("PAUSE");
}


void start()
{
    void input(int type);
    void check(int type);
    setup();
    input(1);
    input(2);
    input(3);
    check(4);
    begin(m);
}

void input(int type)
{
    void check(int type);
    switch (type)
    {
    case 1:
        printf("请输入m的值\n");
        scanf_s("%d", &m);
        check(1);

        break;
    case 2:
        printf("请输入密码和位置");
        scanf_s("%d %d", &pass, &num);
        check(2);
        add(pass,num);
        break;
    case 3:
        printf("你是否要继续输入?请输入yes或no\n");
        scanf_s("%s", yOrN);
        check(3);
    }
}



void check(int type)
{
    switch (type)
    {
    case 1:
        if (m != (int)m)
        {
            printf("你输入的m值不合要求,请重新输入\n");
            input(1);

        }

    case 2:
        if (pass > m)
        {
            printf("你输入的密码不合要求,重新输入\n");
            input(2);

        }

    case 3:
        if ((strcmp(yOrN, "yes") != 0) && (strcmp(yOrN, "no") != 0))
        {
            printf("请输入yes或no\n");
            input(3);

        }
        else input(2);

        break;
    case 4:
        if (!checkIfNull())
        {
            printf("你建立的链表不合法,请重新建立");
            input(2);

        }

        break;
    }
}

该项目只写了这2个文件。下面上张报错的图:
图片说明

求解决方法

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.01 21:35

楼主这是VS2012?我这里可以的

图片说明

建议楼主重新生成一下,或者重新创建个工程试试

YXTS122
YXTS122   2016.04.01 22:57

如果没定义ifndef头文件,就定义define头文件
井ifndef "….h"
井define "….h"
加上这个试下。。。

YXTS122
YXTS122   2016.04.01 23:00

或者把那个同名的函数的函数名另外取个名字试下看行不行

N_Fawkes
N_Fawkes   2016.04.01 23:14

#pragma once 加上这个呢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
printf函数的原型和重定义
本文详细介绍了嵌入式开发领域中常用的printf函数重定义的方法,适合于那些想要了解printf函数原理以及对其进行重定义使用的同学
c语言中头文件的建立与使用-函数、全局变量、全局数组
一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#i nclude语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#i nclude语句将头文件引用时,相当于将头文件中所有内容,复制到#i nclude处。为了避免因为重复引用而导致的编译错误,头文件常具有
C程序中如何自定义头文件
程序的规范的一个方面就是程序有序,不能所有的程序都写在一个文件中。最好的分类方式就是把各种各样的功能分类编写,这样,主文件会简洁许多,而函数的查阅也很方便 如果你不知道如何把自己定义的一个函数放在my_includes.h文件中并在主文件中#include "my_includes.h"调用,这个例子将告诉你怎个实现的过程 bug修正:一般的,在定义.h文件后,在实现它的.c文件中,应该包含.h文件 即my_math.c中应有#include "my_math.h" 其中一个函数henry()应该为henryying(),相信大家容易发现!!!
C语言头文件包含关系分析工具
c# 简易绘制C语言头文件包含关系图 详细说明可以查看我的blog http://www.cnblogs.com/geeking/ 本工具使用了DotNetBar中的TreeGX控件。下载地址: http://down2.cr173.com/soft1/DotNetBarSetup.zip
c语言库函数使用大全及头文件介绍
C、传统 C++ #include <assert.h>    //设定插入点 #include <ctype.h>     //字符处理 #include <errno.h>     //定义错误码 #include <float.h>     //浮点数处理 #include <fstream.h>    //文件输入/输出 #include <iomanip.h>    //参数化输入/输出 #include <iostream.h>   //数据流输入/输出 #include <limits.h>    //定义各种数据类型最值常量 #include <locale.h>    //定义本地化函数 #include <math.h>     //定义数学函数 #include <stdio.h>     //定义输入/输出函数 #include <stdlib.h>    //定义杂项函数及内存分配函数 #include <string.h>    //字符串处理 #include <strstrea.h>   //基于数组的输入/输出 #include <time.h>     //定义关于时间的函数 #include <wchar.h>     //宽字符处理及输入/输出 #include <wctype.h>    //宽字符分类 //////////////////////////////////////////////////////////////////////
C语言嵌入式
C语言嵌入式常见经典试题局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的
C语言程序设计函数头文件库
C语言中的头文件有多少种?都有哪些?C函数库有哪些?
C语言头文件包含的函数
C语言头文件包含的函数,让c更深入,更上一层楼。
c语言头文件
C语言头文件编写规则-------当希望在多个源文件中共享变量或函数时,需要确保定义和声明的一致性。最好的安排是在某个相关的.c文件中定义,然后再头.h文件中进行外部声明,在需要使用的时候,只要包含对应的头文件即可。定义变量的.c文件也应该包含该头文件,以便编译器检查定义的和声明的一致性。
C语言函数头文件大全
C语言函数头文件大全 C语言函数头文件大全