= Macro를 이용해서 쉽게 sprintf를 사용하도록 함.
= 메시지 처리시에 유용
= 버퍼 오버플로우시의 로직은 좀더 고민 필요
= 에러시 retrun함 : 첫인자로
#define REQ_BUF_LEN 40960
#define REQ_SPRINT(_err_ret, ...) { \
gReqBufLen += snprintf(&gReqBuf[gReqBufLen], sizeof(gReqBuf) - gReqBufLen, __VA_ARGS__); \
if(gReqBufLen >= sizeof(gReqBuf)) { \
cmsLog_error("Exceed buff[%u >= %u]", gReqBufLen, sizeof(gReqBuf)); \
return _err_ret; \
} \
}
#define REQ_MEMCPY(_err_ret, _src, _src_len) { \
if((gReqBufLen + (_src_len)) >= sizeof(gReqBuf)) { \
cmsLog_error("Exceed buff[%u >= %u]", gReqBufLen + (_src_len), sizeof(gReqBuf)); \
return _err_ret; \
} \
memcpy(&gReqBuf[gReqBufLen], (_src), (_src_len)); \
gReqBufLen += (_src_len); \
}
char gReqBuf[REQ_BUF_LEN + 1];
unsigned int gReqBufLen = 0;
unsigned int gReqTmpLen;