Перейти к содержанию
    

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

Здравствуйте, коллеги!! Может, конечно, глупый вопрос задам, не пинайте сильно. В который раз уже замечаю, что 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, где стоит единица.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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, то значит компилятор действительно не видит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

#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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

40 минут назад, IvanPletnev сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...