#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
рядом с каждым определением?
@Arnyminer Z, 👍1
Обсуждение2 ответа
Лучший ответ:
Похоже, что причиной проблемы является ваш стиль комментариев.
Удалите////////////// НАСТРОЙКИ ПЛАТЫ \\\\\\\\\\\\\
\ оформите комментарии в стиле или измените их на что-то вроде: /*----------- НАСТРОЙКИ ПЛАТЫ -----------*/
\ в конце комментария продолжает текущую строку на следующую, так что вы получаете ///// комментарий \\\\#ifdef ...
, который закомментирует #ifdef
., @Majenko
Если вы удалите обратную косую черту в конце комментариев к строкам перед #ifdefs
, это будет работать просто отлично.
Редактор gvim был гораздо более полезен в этом:
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
То, как вы его используете, нет, вам не нужно добавлять 0 '#define XYZ
, этого достаточно.
#ifdef XYZ` будет работать для этого случая., @MazarykКроме того, вы объявили "#if GUN", что, вероятно, означало "#ifdef GUN"., @Mazaryk
Используя
#ifdef
и заканчивая#endif
, я все еще показываю эту ошибку, @Arnyminer ZЯ не говорил, что это исправит ошибку, я просто отвечал на ваш второй вопрос "необходимо ли иметь 0 ...", @Mazaryk