Jump to content

    
Sign in to follow this  
IvanPletnev

CubeIDE в упор не видит дефайн! LWIP

Recommended Posts

Здравствуйте, коллеги!! Может, конечно, глупый вопрос задам, не пинайте сильно. В который раз уже замечаю, что CubeIDE иногда отказывается реагировать на define. Вот пример: 

В файле lwipopts.h 

#define LWIP_NETIF_STATUS_CALLBACK 1

в файле netif.c

#include "lwip/opt.h"
  
  #if LWIP_NETIF_STATUS_CALLBACK
  void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback){
     .....
  }

Соответственно, в файле lwip/opt.h подключен файл lwipopts.h. 

Всё, как обычно. Но! Код, который внутри #if #endif неактивен(подсвечен) и не компилируется. При наведении курсора на LWIP_NETIF_STATUS_CALLBACK в подсказке показывается 0. При этом в файле opt.h конструкция 

#if !defined LWIP_NETIF_STATUS_CALLBACK || defined __DOXYGEN__
#define LWIP_NETIF_STATUS_CALLBACK      0
#endif

работает. И если нажать в файле netif.c на LWIP_NETIF_STATUS_CALLBACK с зажатым ctrl, то редактор перекидывает на этот дефайн в файле lwipopts.h, где стоит единица.

Такое регулярно случается, потом проходит само собой. Почему это происходит и как бороться с этим, кто нибудь может объяснить?

Share this post


Link to post
Share on other sites
35 minutes ago, IvanPletnev said:

Всё, как обычно. Но! Код, который внутри #if #endif неактивен(подсвечен) и не компилируется. При наведении курсора на LWIP_NETIF_STATUS_CALLBACK в подсказке показывается 0. При этом в файле opt.h конструкция 

Вы уверены что не компилируется ?

Если IDE не подсвечивает, то это не обязательно, что компилятор не видит.

Для проверки внутрь #if #endif вставьте директиву #error

#if !defined LWIP_NETIF_STATUS_CALLBACK || defined __DOXYGEN__
#define LWIP_NETIF_STATUS_CALLBACK      0
#error bla-bla
#endif

И если компилятор выдаст ошибку bla-bla, то значит компилятор действительно не видит.

Share this post


Link to post
Share on other sites

А и правда компилируется этот код. Но избавиться от подсветки "неактивного" кода мне так и не удалось.

#include "lwip/opt.h"
  
  #if LWIP_NETIF_STATUS_CALLBACK
  void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback){
     .....
  #error bla-bla
  }
  #endif

Даёт ошибку. Значит, всё работает. Но эта подсветка сильно сбивает с толку.

Share this post


Link to post
Share on other sites
40 минут назад, IvanPletnev сказал:

Но эта подсветка сильно сбивает с толку.

Попробуйте в дереве проекта вызвать контекстное меню и там выбрать Index->rebuild. В "чистой" эклипсе часто помогает.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this