Несколько #ifndef против одного #endif

Мой вопрос связан с проблемой, указанной по ссылке: Существует ли какая-либо хорошо работающая основная библиотека MODBUS TCP для Arduino?

Пример библиотеки Modbus TCP master, как предложено в посте выше. Часть файла ModbusTCP.h:

#ifndef Modbus_TCPIP_h
#define Modbus_TCPIP_h

#ifndef WIZNET_W5100
#define WIZNET_W5100  0       /**< define 1 if  WIZNET W5100 IC is used, otherwise 0 */
#ifndef ENC28J60
#define ENC28J60      1       /**< define 1 if  ENC28J60 IC is used, otherwise 0     */
#ifndef ESP8266
#define ESP8266       0

//...Весь код заголовка

#endif // Всего одно вхождение #endif в последней строке кода заголовка! 8-|

Когда я запустил компиляцию в своей среде Arduino IDE, я получил следующую ошибку: unterminated #ifndef. Упомянутая ошибка имеет четыре появления в журнале ошибок и связана с: Modbus_TCPIP_h, WIZNET_W5100 и ENC28J60.

Что следует изменить в заголовочном файле?

, 👍-1


1 ответ


0

В коде отсутствует "#endif". Должно выглядеть примерно так:

#ifndef WIZNET_W5100
#define WIZNET_W5100  0       /**< define 1 if  WIZNET W5100 IC is used, otherwise 0 */
#endif
#ifndef ENC28J60
#define ENC28J60      1       /**< define 1 if  ENC28J60 IC is used, otherwise 0     */
#endif
#ifndef ESP8266
#define ESP8266       0
#endif

Ура!

,