关于#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]]