关于LWIP的调试程序
时间:10-02
整理:3721RD
点击:
在SOCKET。C文件里面。LWIP_DEBUGF我已经申明过了。但这里面的 那个变量s是代表什么?应该怎么样给他赋值?
系统出现这样的警告:
Warning : C2917W: no side effect in void context: '"get_socket(%d): invalid\n"'
是不是里面的那个变量s没有赋值的原因?
static struct lwip_socket *
get_socket(int s)
{
struct lwip_socket *sock;
if ((s < 0) || (s > NUM_SOCKETS)) {
LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%d): invalid\n", s));
set_errno(EBADF);
return NULL;
}
2.关于Warning : C2917W的介绍可以参考keil官网的手册
3.在lwIPopts.h的debug options部分有下面的定义
因此,应该改成 LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%"S32_F "): invalid\n", s));就可以了
系统出现这样的警告:
Warning : C2917W: no side effect in void context: '"get_socket(%d): invalid\n"'
是不是里面的那个变量s没有赋值的原因?
static struct lwip_socket *
get_socket(int s)
{
struct lwip_socket *sock;
if ((s < 0) || (s > NUM_SOCKETS)) {
LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%d): invalid\n", s));
set_errno(EBADF);
return NULL;
}
你这个函数是不是没有贴全?差一个右花括号;
s有效时没有有效的返回值,sock也没有有效赋值,赋值前不能作为返回参数;
C2917W出现的原因应该结合LWIP_DEBUGF和SOCKETS_DEBUG的定义分析,请将get_socket、LWIP_DEBUGF和SOCKETS_DEBUG的定义贴全上来帮你分析
1.LWIP_DEBUGF的声明在debug.h文件
- #define LWIP_DEBUG
- #ifdef LWIP_DEBUG
- /** print debug message only if debug message type is enabled...
- * AND is of correct type AND is at least LWIP_DBG_LEVEL
- */
- #define LWIP_DEBUGF(debug, message) do { \
- if ( \
- ((debug) & LWIP_DBG_ON) && \
- ((debug) & LWIP_DBG_TYPES_ON) && \
- ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
- LWIP_PLATFORM_DIAG(message); \
- if ((debug) & LWIP_DBG_HALT) { \
- while(1); \
- } \
- } \
- } while(0)
- #else /* LWIP_DEBUG */
- #define LWIP_DEBUGF(debug, message)
- #endif /* LWIP_DEBUG */
- #endif /* __LWIP_DEBUG_H__ */
2.关于Warning : C2917W的介绍可以参考keil官网的手册
3.在lwIPopts.h的debug options部分有下面的定义
- #if 1
- #define U8_F "c"
- #define S8_F "c"
- #define X8_F "x"
- #define U16_F "u"
- #define S16_F "d"
- #define X16_F "x"
- #define U32_F "u"
- #define S32_F "d"
- #define X32_F "x"
- extern void UARTprintf(const char *pcString, ...);
- #define LWIP_PLATFORM_DIAG(x) {UARTprintf x;}
- #define LWIP_DEBUG
- #endif
因此,应该改成 LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%"S32_F "): invalid\n", s));就可以了