#undef的用处

#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掉来确保宏的正常。

原文地址:https://www.cnblogs.com/air-of-code/p/3508188.html