Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7070190
  • 博文数量: 703
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12041
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。

文章分类

全部博文(703)

分类: C/C++

2016-01-25 17:43:05

网友分享于:2013-02-11  浏览:195次
#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掉来确保宏的正常。
阅读(3758) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~