求帮忙【重复定义问题】【multiple definition】

一共有main.c input.c all.hall.h 里面有全部的常量和变量编译的时候报错 重复定义 求大神帮忙啊具体函数里面的不用看,就是不知道为什么重复定义了首先是所有的函数都重复定义了然后就是几个全局变量也是sleep还找不到 不知道为什么新手求帮助啊~我把错误也粘过来

这是input.c#include"all.h"#include<windows.h>void input();int judgeMission();void complete();void stop();int judgeMission(){if(currentPtr->nextPtr==NULL)return 0;elsereturn 1;}void complete(){struct floor * tempPtr;while(elevator.now!=currentPtr->num){if(elevator.now-currentPtr->num>0)elevator.state=DOWN;elseelevator.state=UP;elevator.now+=elevator.state;sleep(SPEED*1000);}tempPtr=currentPtr;currentPtr=currentPtr->nextPtr;free(tempPtr);}void stop(){elevator.state=STOP;sleep(STOPTIME*1000);}void input(){int state=0;struct floor *tempPtr=NULL;switch(state){case 0:{if(judgeMission()==1)state=1;break;}case 1:{if(elevator.now==currentPtr->num)complete();else{tempPtr=currentPtr;currentPtr=currentPtr->nextPtr;free(tempPtr);state=2;}break;}case 2:{stop();if(judgeMission()==1)state=1;elsestate=0;break;}}}以下是all.h#ifndef ALREADY#define ALREADY#include<stdlib.h>//电梯运行方向#define UP 1#define DOWN -1#define STOP 0//电梯停靠时间#define STOPTIME 5//电梯速度#define SPEED 0.25struct floor{int num;//楼层信息int direction;//方向struct floor * nextPtr;//下一个指针};struct ELEVATOR{int now;//电梯当前的楼层,浮点数是因为随着时间的流动,会出现在两层之间的状况int state;//电梯当前的状态};//用于指示链表中当前目标楼层和最后目标楼层struct floor * currentPtr=NULL,* lastPtr=NULL;//用于创建电梯及对电梯的初始化struct ELEVATOR elevator={0,0};#endif

main.c是什么样的? 你是不是在main.c里面也include all.h了?
全局变量最好不要定义在h文件里面,而是定义在c文件里面,在h文件里面extern 声明
另外你是不是在main.c里面include input.c了 感觉是input.c编译了两次追问

确实在main.c里面加上了input.c。。这个应该怎么改呢。。

追答

看你的编译器已经自动编译了input.c了,这样你试试把inlcude input.c去掉好了 应该可以的

温馨提示:内容为网友见解,仅供参考
无其他回答

求帮忙【重复定义问题】【multiple definition】
全局变量最好不要定义在h文件里面,而是定义在c文件里面,在h文件里面extern 声明 另外你是不是在main.c里面include input.c了 感觉是input.c编译了两次

求助multiple definition of错误怎么解决
如果是,双击查找到问题所在行,这种错误的起因是某个变量或者常量或者宏被多次定义过,如果编译后只有一两个这种错误,一般是某个变量或者常量或者宏的名字重复使用了,查找下.c文件或者.h文件应该不难发现;如果是大面积出现,则有可能是头文件没加防止重定义的宏,在h文件中加入 ifndef __xxx_H def...

如何解决linux下编译出现的multiple definition of错误
define TEST_H endif 就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于,文件中有重名变量,于是就出现了重复定义的错误。方法1:给每一个头文件加上条件编译,避免该文件被多次引用时被多次解释,这是个应该是习惯。这个方法会解决大部分低级...

定义函数引起的multiple definition 问题
在编写代码时,常常会遇到与函数声明和定义相关的multiple definition问题。近期在编译代码过程中,就遇到了这种问题,并且对此进行了深入研究。简化案例如下:在头文件A中包含了函数fun_A的声明与定义。头文件B引用了头文件A并包含了函数fun_B的声明。在B.cpp中对fun_B进行了定义。在main.cpp文件中,函...

怎么解决"multiple definition of"错误
如果是,双击查找到问题所在行,这种错误的起因是某个变量或者常量或者宏被多次定义过,如果编译后只有一两个这种错误,一般是某个变量或者常量或者宏的名字重复使用了,查找下.c文件或者.h文件应该不难发现;如果是大面积出现,则有可能是头文件没加防止重定义的宏,在h文件中加入 ifndef __xxx_H def...

如何解决linux下编译出现的multiple definition of错误
这就是重复定义了,建议在一个头文件里定义,然后前面使用ifndef...define..endif的模式加载头文件,就不会出现重复定义的问题

c语言中 multiple definition of 'main'
在C语言编程中,遇到'multiple definition of 'main''错误,通常意味着你可能在同一个项目的不同源文件中,无意或有意地为main函数进行了重复定义。这是不允许的,因为一个程序的标准入口点只能有一个main函数。如果你在其他文件中也定义了main,解决办法是将这些多余的main函数重命名,确保主程序的...

C++ 调试结果为 multiple definition of `head' 怎么改?
1. 这是编译结果,不是调试结果。编译都没有通过,离调试还远。2. 这个错误信息是 多次定义`head'首次定义在这里.找到后面重复定义的head,把名字改了。把这个类的全部定义贴出来。

求大虾帮帮忙! gcc出现multiple definition of错误!!
func()函数就有两种路径了。1.通过包含的头文件。2.通过extern直接找到。所以找到两个int func()的定义。就报这个错误了。gcc -I.\/ main.c matrix.c -o main -g3 -O0 -Wall \/\/就默认这三个文件是属于同一个项目下了,所以extern就在main函数中生效了。

multiple definition of问题求教
multipledefinitionof:关于……的多种定义;关于……的多角度定义。

相似回答
大家正在搜