Установка pinmode() в заголовочном файле

c++ header 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

, 👍1

Обсуждение

попробуйте включить заголовочный файл изнутри setup(), @jsotola

@jsotola у меня такая же ошибка..., @user1584421

За исключением директив препроцессора, ничто из этого не относится к заголовку., @Edgar Bonet


1 ответ


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

3

Инструкция pinMode() представляет собой исполняемый код и не может выполняться вне функции — setup(), loop() или какой-либо другой функции, определенной вами. Можно представить определение функции в файле заголовка (.h) для установки режимов вывода, но определение кода в заголовке вызовет проблемы другого типа (несколько определений), если вы когда-либо добавите другой модуль кода, файл .cpp, для экземпляр, который также включает в себя тот же файл .h.

Режимы выводов обычно задаются в функции setup() один раз за выполнение скетча. На самом деле нет особой ценности в том, чтобы иметь их в файле .h. Если это для целей документации, вы можете #define в файле .h, символ, который расширяется до всех необходимых вам вызовов pinMode(), а затем записывайте этот символ в соответствующее место в вашей функции setup(), где его расширение будет быть синтаксически правильным. Это позволит выполнить документацию, но за счет того, что читателю вашего кода придется искать определение этого символа, чтобы узнать, какой код там выполняется. Это довольно окольный путь для того, что кажется практически бесполезным.

,