免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: nine8
打印 上一主题 下一主题

[请教] 关于使用ifndef避免宏重复定义的讨论 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-06-20 22:12 |只看该作者
其中好处只有用了才知道

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
22 [报告]
发表于 2010-06-20 22:29 |只看该作者
#ifdef A
#undef A
#define A xxxx
#endif

这种是后定义的覆盖前面定义的,优先。

#ifndef A
#define A xxxx
#endif

这种是如果定义,不会覆盖定义,则前定义的优先……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
23 [报告]
发表于 2010-06-20 22:31 |只看该作者

  1. #ifdef A
  2. #undef A
  3. #define A xxxx
  4. #endif
复制代码

  1. #undef A
  2. #define A ...
复制代码
相同

如果某个标识符没有被定义, #undef也是可以的。

论坛徽章:
0
24 [报告]
发表于 2010-06-21 08:47 |只看该作者
回复 18# OwnWaterloo


    是的,这是一记教科书般的进球

论坛徽章:
0
25 [报告]
发表于 2010-06-21 09:13 |只看该作者
1. 多次包含的情况

include xxx 就是将xxx的内容原地展开

假设有:
a.h, 内容是A

b.h, 内容是: ...
OwnWaterloo 发表于 2010-06-20 21:49



    顶之,每次看到OwnWaterloo的文章,都会受益、、、、

论坛徽章:
0
26 [报告]
发表于 2010-06-21 22:27 |只看该作者
谢谢上面各位朋友的解答,尤其是OwnWaterloo那么详细的讲解

--------------------------------------------------------------------------

但是有个问题,可能还是要请教大家一下?

假如有很多文件,我负责其中某几个文件,然后我想在我的文件中 define某个宏为某个值,但是没法确认其他文件中是否有同样名字但不同值的定义,我该如何定义比较好呢?

感觉不过不加提示信息,没法保证由于在不知道的情况下,由于定义了相同名字而不通值所造成的错误吧?

论坛徽章:
0
27 [报告]
发表于 2010-06-22 02:45 |只看该作者
回复 26# nine8

  1. #if defined(SOME_MACRO)

  2. #error "SOME_MACRO already defined"

  3. #else

  4. #define SOME_MACRO (your_value)

  5. #endif
复制代码

论坛徽章:
0
28 [报告]
发表于 2010-06-22 11:23 |只看该作者
学习

论坛徽章:
0
29 [报告]
发表于 2010-06-22 12:51 |只看该作者
写的很精彩

论坛徽章:
0
30 [报告]
发表于 2010-06-22 17:27 |只看该作者
本帖最后由 llsshh 于 2010-06-22 17:50 编辑

模块化。 如 你工作在蓝牙模块。 一般会约束在宏#define BLUETOOTH_SUPPORT里.
到别人的地盘添东西一般要写
#ifdef BLUETOOTH_SUPPORT
。。。
#else
。。。
#endif

这个扯得有点远
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP