首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LwIP进入BSP 970_NonOS_BSP-主错误的works LWIP_DEBUG选项

LwIP进入BSP 970_NonOS_BSP-主错误的works LWIP_DEBUG选项
EN

Stack Overflow用户
提问于 2022-09-06 08:44:19
回答 2查看 77关注 0票数 1

我正在尝试构建UDP 1.4.1 (例如,这个版本使用LwIP供应商),我想为UDP构建带有诊断消息的版本。问题:在调试器h条件下,#ifdef LWIP_DEBUG构建为未定义的,但是如果#define LWIP_DEBUG exist警告要重新定义它。

更新:它可以在四个文件中重复使用。

udp.c

代码语言:javascript
复制
#include "lwip/opt.h"

err_t
udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port)
{
    // My comment
  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = "));
  return ERR_OK;
}

opt.h

代码语言:javascript
复制
#ifndef __LWIP_OPT_H__
#define __LWIP_OPT_H__

#include "lwipopts.h"
#include "lwip/debug.h"

#endif /* __LWIP_OPT_H__ */

lwipopts.h

代码语言:javascript
复制
#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__

#include "lwipopts.h"
#include "lwip/debug.h"

#define LWIP_DEBUG  1
#define UDP_DEBUG   LWIP_DBG_ON


#endif /* __LWIPOPTS_H__ */

和调试器

代码语言:javascript
复制
#ifndef __LWIP_DEBUG_H__
#define __LWIP_DEBUG_H__

#include "lwip/opt.h"

//#define LWIP_DEBUG  exist
#ifdef LWIP_DEBUG
#define LWIP_DEBUGF(debug, message) do { if ((debug) & 0x80U)  { \
                                 LWIP_PLATFORM_DIAG(message); \
                               } } while(0)

#else  /* LWIP_DEBUG */
#define LWIP_DEBUGF(debug, message) 
#endif /* LWIP_DEBUG */

#endif /* __LWIP_DEBUG_H__ */
EN

回答 2

Stack Overflow用户

发布于 2022-09-06 09:49:16

如果您试图在多个标头中同时从.c文件中定义它,则每个标头需要执行以下操作:

代码语言:javascript
复制
#ifndef LWIP_DEBUG
  #define LWIP_DEBUG 1
#endif

或者另一种选择:

代码语言:javascript
复制
#undef LWIP_DEBUG
#define LWIP_DEBUG 1
票数 0
EN

Stack Overflow用户

发布于 2022-09-07 03:42:49

我发现了问题:从lwipopts.h中删除任何包含。

它在两个文件中复制,udp.clwipopts.h

代码语言:javascript
复制
#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__

#include "lwipopts.h"
//#include "lwip/debug.h" 
/* REDUCED BODY BEGIN */
//#define LWIP_DEBUG  exist
#ifdef LWIP_DEBUG
#define LWIP_DEBUGF(debug, message) do { printf("%d, %s\n", debug, message); } while(0)
#else  /* LWIP_DEBUG */
#define LWIP_DEBUGF(debug, message) 
#endif /* LWIP_DEBUG */
/* REDUCED BODY END */

#define LWIP_DEBUG  1
#define UDP_DEBUG   LWIP_DBG_ON

#endif /* __LWIPOPTS_H__ */

定义LWIP_DEBUG后的#ifdef LWIP_DEBUG条件。这是因为用户lwipopts.h包含

代码语言:javascript
复制
#include "lwipopts.h"
#include "lwip/debug.h"

lwipopts.h不应包含任何包含指令!稍微解释一下:应该是怎样的

代码语言:javascript
复制
#include "lwip/opt.h"
  #include "lwipopts.h"
  // BODY lwipopts.h
  #include "lwip/debug.h"
    //#include "opt.h" /* guarded */
  // BODY debug.h

如何在吉特努沃顿(减少):

代码语言:javascript
复制
#include "lwip/opt.h" /* udp.c */
  #include "lwipopts.h"
    //#include "lwipopts.h"  /* guarded */
    #include "lwip/debug.h"
      //#include "lwip/opt.h"  /* guarded */
      // BODY debug.h
    // BODY lwipopts.h
  //#include "lwip/debug.h" /* guarded */
    //#include "lwip/opt.h" /* guarded */

因此,调试器的主体lwipopts.h交换了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73619141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档