宏的使用

Posted alen_xie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宏的使用相关的知识,希望对你有一定的参考价值。

#define DEFINE_PARSE_BUILD_LINK_CSEQ(_name, _type, _param, _fmt) \\
static int rtsp_msg_parse_##_name (rtsp_msg_s *msg, const char *line) \\
\\
rtsp_msg_hdr_s *hdrs = &msg->hdrs; \\
if (hdrs->_name) \\
rtsp_mem_free(hdrs->_name); \\
hdrs->_name = NULL; \\
\\
hdrs->_name = (_type*)rtsp_mem_alloc(sizeof(_type)); \\
if (!hdrs->_name) \\
err("rtsp_mem_alloc for %s failed\\n", #_type); \\
return -1; \\
\\
if (sscanf(line, _fmt, &hdrs->_name->_param) != 1) \\
rtsp_mem_free(hdrs->_name); \\
hdrs->_name = NULL; \\
err("parse %s failed. line: %s\\n", #_name, line); \\
return -1; \\
\\
return 0; \\
\\
static int rtsp_msg_build_##_name (const rtsp_msg_s *msg, char *line, int size) \\
\\
if (msg->hdrs._name) \\
snprintf(line, size, _fmt "\\r\\n", msg->hdrs._name->_param); \\
return strlen(line); \\
\\
return 0; \\



DEFINE_PARSE_BUILD_LINK_CSEQ(cseq, rtsp_msg_cseq_s, cseq, "CSeq: %u")
DEFINE_PARSE_BUILD_LINK_CSEQ(session, rtsp_msg_session_s, session, "Session: %08X")
DEFINE_PARSE_BUILD_LINK_CSEQ(content_length, rtsp_msg_content_length_s, length, "Content-Length: %u")

以上是关于宏的使用的主要内容,如果未能解决你的问题,请参考以下文章

为 I/O 中使用的寄存器的基地址寻找 INTEL 以太网设备相关宏的宏的内核头文件

模板宏的使用

模板宏的使用

宏的使用方式

vim 宏的使用

是否可以使用传递给宏的项目参数作为方法?