中易网

C++头文件重复编译问题;

答案:2  悬赏:0  
解决时间 2021-02-03 06:17
#ifndef CUSER_H
#define CUSER_H

#include

class User
{
public:
User();
User(int a);
~User();
void setA(int a);
int getA();
protected:
private:
int a;
std::string str;
};

#endif

在CUser.h中声明了一个类,需要一个string的成员,就在这个文件的前面包含了,请问这样会产生重复包含的问题吗?

怎么检查是否会出现重复包含这个问题。
最佳答案
不会重复包含,你一开始用的宏

#ifndef CUSER_H
#define CUSER_H
就是防止重复包含的.
另外,你可以不包含,然后在User前面做一个前置声明:class String;
然后把类成员 str声明为指针,在cpp文件里面在引入头文件.
后面一种是比较好的做法
全部回答

1.高级点儿的编译器都会对代码进行优化,你写一些必要的代码,才能增加体积……

2.我们要防止重复定义,所以需要使用#ifndef之类的宏,例如:

a.h中有

#include"b.h"

main.cpp中

#include"a.h"

#include"b.h"

那么在编译的时候b.h中的内容就会出现重复定义。

3.#if等宏是可以嵌套的。

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么能把doc文档改成word
西铭大宗商品交易中心是正规的吗
业务人员未完成当月销售任务要扣钱吗?
开创广告这个地址在什么地方,我要处理点事
找一步小说,名叫青春期,男主角叫林强,有的
捡了个苹果6ID锁了能卖多少钱
基督教复活节诗歌崇拜程序怎么做?
我的邻居是个小人,给我制造谣言,使别人gong
红玉美容化妆品地址在哪,我要去那里办事
英语翻译:我认为,只有努力拼搏、奉献社会,
缅甸目前到底有多少特区?
机器人快车为什么安装不了
二硫化钼 在哪些溶剂里面分散性好
岔口村村民委员会我想知道这个在什么地方
民国廿七年农历九月初八是今时候公历几月几日
推荐资讯
我有五百俄罗斯卢布,拿去银行兑换人民币这种
为什么我的电脑只能打开网页游戏,打不开哪些
寿光市皮肤病医院这个地址在什么地方,我要处
外墙涂料施工及材质价格
东风神双闪关不了
博兴农村商业银行赵楼分理处地址在哪,我要去
中央五台2015-16nba新赛季宣传曲叫什么名字
浙江师范大学金华职业技术学院教学点毕业的学
做鱼火锅起个店名
我家人看了那个天使的城说我的脸型和袁弘的很
playmaker好用么,能做出什么效果
武术四段属于什么等级
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?