#endif без #if

У меня есть дополнительная проблема... Я написал этот короткий код:

////////////// BOARD SETTINGS \\\\\\\\\\\\\\
#define BAUD_RATE 9600

// Выбор типа платы
// Раскомментировать желаемое
//#define WAND 0
//#define GUN 0
#define RIFLE 0


////////////// WAND SETTINGS \\\\\\\\\\\\\\
#ifdef WAND
//#define USE_CHARGER 0

#endif

////////////// GUN SETTINGS \\\\\\\\\\\\\\
#if GUN
//#define USE_CHARGER 0

#endif

////////////// RIFLE SETTINGS \\\\\\\\\\\\\\
#ifdef RIFLE
  #define USE_CHARGER 0

#endif

Он находится в файле под названием Settings.h, который я использую в основном коде:

#include "Settings.h"

void setup(){
  Serial.begin(BAUD_RATE);
  #ifdef WAND
    Serial.println("Initializing Wand...");
  #endif
  #ifdef GUN
    Serial.println("Initializing Gun...");
  #endif
  #ifdef RIFLE
    Serial.println("Initializing Rifle...");
  #endif
}

void loop(){
  #ifdef WAND

  #endif
  #ifdef GUN

  #endif
  #ifdef RIFLE

  #endif
}

Но по посторонней причине это выдает мне следующую ошибку: ошибка: #endif без #if Полная ошибка заключается в следующем:

In file included from D:\MEGA\Winsoft\Projects\Hardware\MWands\Arduino_5\Arduino_5.ino:1:0:

Settings.h:15: error: #endif without #if

 #endif

  ^

Settings.h:21: error: #endif without #if

 #endif

  ^

Settings.h:27: error: #endif without #if

 #endif

  ^

exit status 1
#endif without #if

Есть какие-нибудь идеи в том, где я ошибаюсь?

И, пользуясь тем, что я спрашиваю, необходимо ли 0 после #define RIFLE 0рядом с каждым определением?

, 👍1

Обсуждение

То, как вы его используете, нет, вам не нужно добавлять 0 '#define XYZ, этого достаточно. #ifdef XYZ` будет работать для этого случая., @Mazaryk

Кроме того, вы объявили "#if GUN", что, вероятно, означало "#ifdef GUN"., @Mazaryk

Используя #ifdef и заканчивая #endif, я все еще показываю эту ошибку, @Arnyminer Z

Я не говорил, что это исправит ошибку, я просто отвечал на ваш второй вопрос "необходимо ли иметь 0 ...", @Mazaryk


2 ответа


Лучший ответ:

1

Похоже, что причиной проблемы является ваш стиль комментариев.

Удалите////////////// НАСТРОЙКИ ПЛАТЫ \\\\\\\\\\\\\\ оформите комментарии в стиле или измените их на что-то вроде: /*----------- НАСТРОЙКИ ПЛАТЫ -----------*/

,

\ в конце комментария продолжает текущую строку на следующую, так что вы получаете ///// комментарий \\\\#ifdef ..., который закомментирует #ifdef., @Majenko


0

Если вы удалите обратную косую черту в конце комментариев к строкам перед #ifdefs, это будет работать просто отлично.

Редактор gvim был гораздо более полезен в этом:

,