Установка pinmode() в заголовочном файле
Я пытаюсь создать заголовочный файл для обработки всех моих определений выводов и режимов ввода.
Это заголовок:
#ifndef __HEADER_TESTER__
#define __HEADER_TESTER__
#include <SoftwareSerial.h>
const byte rxPin = 2;
const byte txPin = 3;
SoftwareSerial mySerial(rxPin, txPin);
pinMode(LED_BUILTIN, OUTPUT);
#endif
Однако при компиляции я получаю сообщение об ошибке в строке pinMode(LED_BUILTIN, OUTPUT);
:
expected constructor, destructor, or type conversion before '(' token
@user1584421, 👍1
Обсуждение1 ответ
Лучший ответ:
Инструкция pinMode()
представляет собой исполняемый код и не может выполняться вне функции — setup(), loop() или какой-либо другой функции, определенной вами. Можно представить определение функции в файле заголовка (.h) для установки режимов вывода, но определение кода в заголовке вызовет проблемы другого типа (несколько определений), если вы когда-либо добавите другой модуль кода, файл .cpp, для экземпляр, который также включает в себя тот же файл .h.
Режимы выводов обычно задаются в функции setup() один раз за выполнение скетча. На самом деле нет особой ценности в том, чтобы иметь их в файле .h. Если это для целей документации, вы можете #define в файле .h, символ, который расширяется до всех необходимых вам вызовов pinMode(), а затем записывайте этот символ в соответствующее место в вашей функции setup(), где его расширение будет быть синтаксически правильным. Это позволит выполнить документацию, но за счет того, что читателю вашего кода придется искать определение этого символа, чтобы узнать, какой код там выполняется. Это довольно окольный путь для того, что кажется практически бесполезным.
- Ошибка: Переменная или поле объявлены недействительными
- В чем логика Arduino, встраивающая `HardwareSerial::_rx_complete_irq()` для получения последовательных данных (но НЕ `_tx_udr_empty_irq()`)?
- C++ против языка Arduino?
- Как использовать SPI на Arduino?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- Ошибка: expected unqualified-id before 'if'
- Что лучше использовать: #define или const int для констант?
- Функции со строковыми параметрами
попробуйте включить заголовочный файл изнутри
setup()
, @jsotola@jsotola у меня такая же ошибка..., @user1584421
За исключением директив препроцессора, ничто из этого не относится к заголовку., @Edgar Bonet