#undef的用处
在一些linux程序中,大部分都有一个config.h文件
在文件中经常会见到如下的宏
/* Define if /dev/poll is available */
#undef HAVE_DEVPOLL
按照宏的意思是说,如果系统中有/dev/poll就定义HAVE_DEVPOLL
那为什么用#undef呢?
------解决方案--------------------
取消先前定义的宏变量
------解决方案--------------------
如果你想定义这个宏那就#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掉来确保宏的正常。