永发信息网

两个类的头文件里都要用到同一个自己定义的结构体怎么用

答案:2  悬赏:80  手机版
解决时间 2021-03-16 21:01
两个类的头文件里都要用到同一个自己定义的结构体怎么用
最佳答案
第二个文件如果include了第一个文件,那么第一个文件里面所有的被包含的文件也相当于在第二个文件里面被包含了。所以不用重新包含。

还有,你说那中情况是不会重复的。

一般情况下。文件都是这么写,无论你怎么弄都不会重复了
#ifndef __A_H__//这个宏一般就是你的文件名.变成下划线,前后各加两个下划线
#define __A_H__
你要写的代码的内容
#endif
全部回答
#include "头文件",这种声明是本文件包含了所包含的头文件里面内容,这样该文件在预处理时就会把头文件里面包含的内容搬过来,用其内容来替换#include "头文件"这条语句,因此多个文件包含同一头文件,或间接包同一含头文件就如楼主这种情况,就会在fun2中产生两次(甚至多次的)typedet struct student { int a; int b; }stu; 这个结构体定义,因此会出现重定义错误,要避免这种情况需要使用条件编译处理如下 struct.h 这个头文件就应该这样写 #ifndef fun_h//这个fun_h是随便写,但建议有意义也不能和别的头文件相同。 #define fun_h typedet struct student { int a; int b; }stu; #endif fun1.h 这个头文件包涵struct.h 这个自定义头文件就应该进行条件编译处理如下写: #ifndef fun_h #define fun_h #include "struct.h" #endif 如果本头文件实现了函数就把函数声明放条件编译里面,函数定义放条件编译外面(一般都会是头文件只做函数原型声明,会在另一个源文件只做定义即实现,当然,对于内联函数有点点区别,楼主自己区别),这样一来fun1就该这样写: #ifndef fun_h #define #include "struct.h" void(int a, stu *studentone ); #endif void(int a, stu *studentone ) { //函数实现,但是一般不建议在头文件实现函数,内联函数除外 } 这样一来在预处理时执行条件编译后就不会吧同一个相同的头文件的内容包含进来,一般发型项目都是会用到条件编译,防止其他人使用头文件产生重复定义,而无法查找错误,所以每个人建立自己的头文件都应该使用条件编译。 使用条件编译后就不会出现这种重复定义的错误,希望对楼主有帮助。 其实最简单的就是 因为在fun1.h内已经 #include struct.h 在fun2中就不需要#include struct.h了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑处于静音状态而且桌面音量图标一直闪烁
我前几天在唯品会买的东西不合适就没收,为什
辽宁瑛冠高技术陶瓷有限公司地址在哪,我要去
因为派出所不作为所造成的损失能索赔吗
炫舞时代明明不卡为什么开对局老被卡出来
郑州二七区哪里可以刻录光盘?刻5,6张,尽量
甜梦床垫我想知道这个在什么地方
没有炸过的小鱼干放两年了还能吃吗
校园打斗动漫
东北林大土木工程和长安大学土木工程哪个好
冷水滩喝酒喊拳
一首好诗不仅能带给人美的享受还能带给人一定
别克凯越手动档倒档要怎么挂
姓孙男孩的名字属猴
西宁有什么好的舞蹈学校啊?我住在西宁
推荐资讯
两个男人我该怎么选择?事情经过是这样的,在
女孩说让我把她拉黑,我说等我有时间的好吧,
东华理工大学测绘专业(专硕)的研究生怎么样
RTU与PLC有什么区别
四川大学大二转专业的问题~
彭阳县好又多商贸有限责任公司水利局店我想知
操场亲吻被老师逮到 要写检讨 要深刻2000字
今年卖的电脑,贵吗?(和去年相比) 打算500
新上丹花苑幼儿园地址在哪,我要去那里办事
[素描中]在画一些动物皮毛时怎样处理才能更加
7×括号x-2括号=2x+3
光明东里交通方便吗?应该怎么过去?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?