永发信息网

为什么要用ifndef?

答案:2  悬赏:10  手机版
解决时间 2021-01-19 17:35
为什么要用ifndef?
最佳答案
使用ifndef的头文件都是这样写的:
xxx.h:
#ifndef XXX_H
#define XXX_H
class Xxx{
//... ...
};
#endif

如果这样的话,多次引入xxx.h会像下面这样:

#include "xxx.h"
#include "xxx.h"
#include "xxx.h"

展开为:

#ifndef XXX_H
#define XXX_H
class Xxx{
//... ...
};
#endif
#ifndef XXX_H
#define XXX_H
class Xxx{
//... ...
};
#endif
#ifndef XXX_H
#define XXX_H
class Xxx{
//... ...
};
#endif
全部回答
#include指令的缺陷,导致同一个头文件会被多次引入,使用ifndef可以避免多次引入。
例如一个程序中包含如下文件:dialog.cpp dialog.h network.cpp network.h log.cpp log.h
dialog.cpp中include了network.h和log.h
network.h中也include了log.h
这样dialog.cpp中实际上引入了两次log.h。
在编译的时候,编译器会因为log.h中的函数被定义了两次而报错。
使用ifndef就会避免这个问题。
如果用VC编译器,也可以不使用ifndef,改用#pragma once预编译指令就可以了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题如图,圆弧型声波DFE从坐标原点O向外传
求一部好几年前在香港翡翠台播的关于美人鱼的
起诉造谣者要怎么办?
竹荪吃时要不要浸泡4小时
悬赏50,谢谢
我是不是中什么毒了啊?
求索隆断头版歪脖子头像
单选题能够鉴定氯乙烷中氯元素的存在的最佳操
求职宝有什么作用啊?
0.5是5块吗0.05是多少
重回末世前的小说
o+o+□+□+□=90 o=□+□+□ □=() o=()这道
世界上十大禁听的歌是什么
为什么把蟑螂叫做“小强”
宅男一般喜欢什么样的女生?
推荐资讯
L1-031.到底是不是太胖了
巨商台服现在能玩吗 大陆玩家怎么玩 需要详细
watch,later,can,you,homework, tv,should,fi
疯狂猜成语里面一本卷书上写着36记和第一记还
广东珠江智联这家公司实力如何
家里种了棵柠檬树被虫蛀了怎么办
庆铃汽车4S店(滨州滨城区渤海二十七路508)地
刘晓彤这个名字全国有多少个女的
全文写人叙事,有时泼墨如水有时惜墨如金,具
必须犯规的游戏
灵武到巴彦卓临河市怎么走
秦皇岛火车站到归提寨富立秦皇半岛坐几路
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?