读了一下,好像就是说,如果签名有#define exit,那么后面#ifdef X 就是真了。
#undef X的意思是,取消x的定义。此后,就不认识X了。x的有效范围在#define X 到#undef X之间。
==============
http://topic.csdn.net/u/20070906/22/d046d397-ac20-4cd2-8cea-2d009cc9f4d6.html
如果你想定义这个宏那就#define X 如果你不想让你已经#define X的宏在其他其他地方由于引入了这个包含宏的.h文件而引起一些编译问题,那你就#undef X掉,就这么简单。 举个简单的例子。 有1.c,11.h,12.h三个文件 其中在11.h中定义了#define X extern x int a; 而在12.h中你又定义了#define X int x b; 而在1.c中同时包含了这2个头文件,那就会引起一些问题,此时你必须把其中一个或者这两个都#undef掉来确保宏的正常。
这样吧 下面举一个例子 #define PF 100 使用PF//这个范围PF有效, #undef PF在这里就无效了,就不起作用了