c语言函数重复定义,求助C语言中出现函数重定义错误

1,求助C语言中出现函数重定义错误函数做了两次定义了(删掉一个) 。或者头文件中做了一次定义,但是头文件被重复引用了(百度:防止头文件被重复引用) 。语法错误,编译都不会通过,更不会运行【c语言函数重复定义,求助C语言中出现函数重定义错误】
2,C语言的重复定义问题"Data_Define.c" ->"F_Define.h""F_Define.c"->"F_Define.h"声明放在头文件(.h)可以写成graphics_h,但是通常宏定义都写成大写的 。不能写成graphics.h,宏定义不能使用.来连接,语法错误别把F_Define.c和Data_Define.c文件加入到工程中,应当就编译链接了或者把这两个定义改为.h扩展名,它们不会生成obj文件 , 就没问题了请问你是在同一个项目中吗 。如果不是那就先建立一个控制台项目,然后数据类型写到一个头文件里面,函数写一另个头文件 , 然后CPP文件就写主程序 。
3 , 关于C语言里面一个因函数重复包含而产生的重定义问题请高手解用.c 和 .h一配一的方式 。给外部引用的,挂至头文件 中 。并将头文件用下面宏定义括起来#ifndef __HEADFILENAME_H__#define __HEADFILENAME_H__#endif然后挂头文件 就可以了函数重定义 。把D直接写进B和C里,或者直接在A中调用DB、C、D都分别建一个头文件a.h, b.h, c.h , a.h形如:#ifndef _a_h_#define _a_h_……#endif这样能够避免重复包含,并且函数原型,结构体定义都写在头文件里面,头文件一定不要写函数主体方法很多啊,在BCD文件的前面加个#pragma once就行 , 就是只编译一次 。要不就像三楼说的用#ifndef和#define
4,c语言中如何对函数进行二次定义C语言中不允许重载 , 必须要取不同的函数名 。c语言是面向过程的一种语言,换句话说,他只关心如何解决问题 , 如何以更短的时间和更少的空间解决问题,至于答案以怎样的形式表现出来,那就不是c语言要考虑的东西了 。你可以直接把答案输出到屏幕上,也可以把它输出到一个文件中 。如果涉及到作图一类的问题,你可以选择turbo c,或者java 。我在c++里做了一个测试,程序如下:#include int max(int x,int y)int max(int x,int y,int z)void main()printf("%d\n",max(1,2));printf("%d",max(1,2,3));} 如果定义别的名字相同的函数,可以把它们的参数设置成不同的 , 否则会出现二义性就是重载嘛,C99标准好像是不支持的,但是要看你编译器了,如果GCC新版本应该是支持的,如果VC98估计是不行的~ PS: 如果编译器支持,按照你那么写就行了.5,C语言函数变量重复定义是这样的,同一个函数内定义的每个变量名(局部变量)是唯一的,其内容的改变与本函数外的任何变量无关 。input(inti);output();参数不对定义改为:intinput();voidoutput(inti);函数内部也错,改为:intinput()inti;printf("请选择你所需要的商品");scanf("%d",&i);returni;}main()函数中调用时:inti;i=input();output(i);=========再补充提个建议:不要从子函数中goto到父函数中 。解决的办法是将voidoutput(inti)改为booloutput(inti),错误时返回false , 根据返回值决定是否循环 。voidadvertisement()中同样也不要goto合法的只要你使用正确input(int i);output();参数不对定义改为:int input();void output(int i);函数内部也错,改为:int input()int i;printf("请选择你所需要的商品");scanf("%d",&i);return i;}main()函数中调用时:int i;i = input();output(i);=========再补充提个建议:不要从子函数中goto到父函数中 。解决的办法是将void output(int i)改为bool output(int i),错误时返回false,根据返回值决定是否循环 。void advertisement()中同样也不要goto两个同名变量被分配了不同的内存单元 。计数器更像硬件程序语言 , 你可以看看局部变量的定义,另外重复定义在C中是不合法的,希望对你有帮助

    推荐阅读