小问题,请教关于#define

shiling18hjh 2004-05-07 02:36:26
#ifnodef base
#define base
class base
{
public:
base(){}
~base(){}
.
.
.
.
protected:
char name[20];
int num:
};
#endif
不明白这里的DEFINE是干什么的
有是更奇怪,直接就是:
#ifnodef base
#define base
#endif
什么意思?
...全文
24 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xqyangcsu 2004-05-07
为防止头文件的重复包含采用,就这么简单!
  • 打赏
  • 举报
回复
willpower88 2004-05-07
是在头文件(.h)里,而.cpp中可以不加。
其它的和楼上一样。
  • 打赏
  • 举报
回复
liem 2004-05-07
#ifnodef base
//改成#ifndef base 含义:如果没有定义宏base,则编译下面的内容,直到#endif
#define base//定义宏
class base
{
public:
base(){}
~base(){}
.
.
.
.
protected:
char name[20];
int num:
};
#endif//#ifndef结束
这样当没有定义宏base时,定义了一个类,而当定义了宏base时,不再定义该宏,防止了重复定义。
/把这段文字保存为一个头文件xxx.h
在一个.cpp文件中写上
#include "xxx.h"
#include "xxx.h"
那么不会出现重复定义的错误,当把头文件中所有预定义命令都删除后,再来编译就会出错。
试试吧。
  • 打赏
  • 举报
回复
02051223 2004-05-07

这个是c++书中所讲的条件编译章节中进行编译预处理。

他可以避免头文件重复定义。
如果不用这种语句的话,在涉及到包含文件的程序中很容易
1)造成类的重复出现,
2)类中的数据成员和成员函数等可见性及作用域的破坏。
3)在编译时不能通过,且错误常常是第一个!


总之,你必须在你的程序中加上这些语句。
  • 打赏
  • 举报
回复
cngdzhang 2004-05-07
这是为了避免头文件重复定义而定义的宏

#ifndef base
//如果没定义base宏
#define base
//则定义base宏
#endif
//表示#ifndef的结束

下一次,别的文件还包含这个头文件,编译器就会根据有没定义base宏,来进行预编译了
  • 打赏
  • 举报
回复
ck2205 2004-05-07
为了防止文件重复包含
  • 打赏
  • 举报
回复
zhouqingyuan 2004-05-07
#ifnodef base
#define base
#endif
应该是:
#ifndef base
#define base
#endif

这是为了防止文件重复包含,而设置的宏命令,如果已经包含了这个头文件,则再碰到这个头文件的时候,就因为已经#define了base,所以就不再编译了!如果没有,则继续编译。
  • 打赏
  • 举报
回复
RookieStar 2004-05-07
为防止头文件的重复包含采用:
#ifndef __FILENAME_H__
#define __FILENAME_H__
......
#endif//__FILENAME_H__
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2004-05-07 02:36
社区公告
暂无公告