#define :用于定义一些不可改变的值,类似于const
不过const是放在栈上,而#define定义的常量是放在静态存储区的,区别在于静态存储区,是在整个程序执行完后才释放的。 然后#undef 是 取消该定义 就是定义无效的意思
接下来看代码即可明白其中的意思了
首先是通常情况下 只有define的情况
#include "stdafx.h"
using namespace std;
#define MAXX 3
//#undef MAXX
//#define MAXX 5
int _tmain(int argc, _TCHAR* argv[])
{
int mm = MAXX;
cout << MAXX << endl;
cin >> mm;
return 0;
}
这个就很简单明了 输出3

接下来加上#undef的情况下
#include "stdafx.h"
using namespace std;
#define MAXX 3
#undef MAXX
//#define MAXX 5
int _tmain(int argc, _TCHAR* argv[])
{
int mm = MAXX;
cout << MAXX << endl;
cin >> mm;
return 0;
}

直接报错 ,可以看到 #undef的作用就是取消宏定义