| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1941 人关注过本帖
标题:关于#define的疑问
取消只看楼主 加入收藏
redersun
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-6-6
收藏
 问题点数:0 回复次数:3 
关于#define的疑问
教材上都说#define的使用格式是:#define 宏名 字符串
这样就可以用宏名来代替后面的字符串,可我却发现好多程序都采用:#define 宏名的格式来定义宏,即没有字符串,不知道这种定义有什么用啊,一般用在什么情况下?

下面是我从一个程序中看到的:

#define PJ_ETIMEDOUT      /* 后面省略了字符串,到底是要说明什么意思,有什么用? */
#define PJ_EUNKNOWN
#define pj_assert(expr)   /* 这个还有一个参数,又该怎么理解? */
#define PJ_ASSERT_RETURN(expr, retval) /* 这个成两个参数了? */
#define PJ_MAX_HOSTNAME (128)       /*既然都说宏就是替换为什么还要加括号?*/
#define PJ_EQUEUE_PENDING (-2)
#define PJ_RETURN_OS_ERROR(os_code)
#define PJ_STATUS_FROM_OS(e)
#define PJ_STATUS_TO_OS(e)

等等……,还有很多,我就不再粘贴了

[[it] 本帖最后由 redersun 于 2008-10-8 20:34 编辑 [/it]]
搜索更多相关主题的帖子: define 疑问 
2008-10-08 20:01
redersun
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-6-6
收藏
得分:0 
有时候宏名后面还带参数,我感觉人家这样写代码肯定有用,不该是空语句啊
2008-10-08 20:24
redersun
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-6-6
收藏
得分:0 
非常感谢几位朋友热心回复,可后面带参数的却又省略了字符串的define又是什么意思呢?

#define 宏名
的形式仅仅是用来防止重复包含吗?

[[it] 本帖最后由 redersun 于 2008-10-8 20:39 编辑 [/it]]
2008-10-08 20:37
redersun
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-6-6
收藏
得分:0 
关于#define pj_assert(expr),找到一段说明
#define pj_assert(expr)
Check during debug build that an expression is true. If the expression computes to false during run-time,
then the program will stop at the offending statements. For release build, this macro will not do anything.
Parameters:
expr The expression to be evaluated.

这段话该怎么理解呢?
2008-10-08 20:54
快速回复:关于#define的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011782 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved