
关于C语言里面一个因函数重复包含而产生的重定义问题。。请高手解决
文件A是主文件,B、C存放主程序相关功能模块,D文件存放的是一些共用的定义及延时等一类通用子函数,A同时包含了B,C和D,但是B和C都同时用到了D里面的函数,编译出现重定...
文件A是主文件,B、C存放主程序相关功能模块,D文件存放的是一些共用的定义及延时等一类通用子函数,A同时包含了B,C和D,但是B和C都同时用到了D里面的函数,编译出现重定义错误。
展开
展开全部
B、C、D都分别建一个头文件a.h, b.h, c.h,a.h形如:
#ifndef _a_h_
#define _a_h_
……
#endif
这样能够避免重复包含,并且函数原型,结构体定义都写在头文件里面,头文件一定不要写函数主体
#ifndef _a_h_
#define _a_h_
……
#endif
这样能够避免重复包含,并且函数原型,结构体定义都写在头文件里面,头文件一定不要写函数主体
展开全部
函数重定义。
把D直接写进B和C里,或者直接在A中调用D
把D直接写进B和C里,或者直接在A中调用D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用.c 和 .h一配一的方式。给外部引用的,挂至头文件 中。并
将头文件用下面宏定义括起来
#ifndef __HEADFILENAME_H__
#define __HEADFILENAME_H__
#endif
然后挂头文件 就可以了
将头文件用下面宏定义括起来
#ifndef __HEADFILENAME_H__
#define __HEADFILENAME_H__
#endif
然后挂头文件 就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法很多啊,在BCD文件的前面加个#pragma once就行,就是只编译一次。要不就像三楼说的用#ifndef和#define
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询