标题:关于#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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-237078-1-1.html




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

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