初学者的问题

ren20 2000-06-05 08:07:00
我有一个简单问题想请教:

//myexe.h

#indef abc
#define abc

...
...// 其它代码

在上面的程序中 #define abc 没有替代的东西, 是不是默认0。
有什么用?

谢谢帮助
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ren20 2000-06-08
  • 打赏
  • 举报
回复
关注
bigjim 2000-06-07
  • 打赏
  • 举报
回复
宏定义是全局的。从#define开始,直到文件结束或者遇到#undef
ren20 2000-06-06
  • 打赏
  • 举报
回复
谢谢 bigjim (有您的20分了)

小弟我明白了。

但还有一个关于 bigjim 举的例子 的问题?

#define _MY_HEADER 所定义的_MY_HEADER
在a.cpp中有效,为什么在b.cpp中也有效。

我指的是_MY_HEADER 在 a.cpp中定义后,
我认为在b.cpp中判断时,仍应判断为没有定义。

a.cpp中的定义不会影响b.cpp.
不知我说的对不对?

请各位高手指点迷经。
谢谢
bigjim 2000-06-06
  • 打赏
  • 举报
回复
举个例子来说
//myheader.h
#ifndef _MY_HEADER
#define _MY_HEADER
....
int aaaa;
#endif

//a.cpp
#include "myheader.h"
....
//b.cpp
#include "myheader.h"
现在假设编译程序先处理a.cpp,它包含myheader.h时,发现_MY_HEADER没有被定义,于是#define _MY_HEADER,后来处理b.cpp,它包含myheader.h时,此时_MY_HEADER已经被定义。于是变量aaaa不会被重新定义。所以,_MY_HEADER的值是不重要的,因为后面不会用到它。
#ifndef意思就是if not defined
ren20 2000-06-06
  • 打赏
  • 举报
回复
我还是有点不明白,
ifndef abc
#define abc

int m;
int n;

m= abc n;

有什么用???

bigjim 2000-06-05
  • 打赏
  • 举报
回复
没有替代东西,它就是空,就是没有东西。例如
#ifdef negative
#define sign -
#else
#define sign
int a = sign 3;
在这个例子中,如果negative已经定义,那么a就等于-3,否则,a就等于3。明白了吗?
至于头文件中的
#ifndef abc
#define abc
.....
#endif
这是为了防止头文件被多次包含造成redefination错误。它的值是无所谓的,只是一个标志。
dengdun 2000-06-05
  • 打赏
  • 举报
回复
一般这种预定义是为了在包含头文件时不会重复包含。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧