Использование функций в заголовочных файлах
Я хочу включить функцию в свой скетч, который я переместил в файл .h.
Я сделал это следующим образом:
Мой код:
#include "header.h"
void setup() {
fct();
}
void loop() {
}
Мой заголовок:
#include "Arduino.h"
#ifndef MYHELPERS_H
#define MYHELPERS_H
void fct() {
// stuff
}
#endif
Тот же процесс, кажется, работает для переменных, но IDE говорит, что эта функция не объявлена в этой области...
Я не понимаю, что я делаю не так...
Спасибо, ребята!
@Spyro 999, 👍1
Обсуждение1 ответ
Лучший ответ:
Я нашел решение где-то еще в Интернете...
Эта часть:
#ifndef MYHELPERS_H
#define MYHELPERS_H
Было написано неправильно... "MYHELPERS_H" должен был быть заменен именем моего файла. Теперь это работает просто отлично.
нет никакой связи между именем макроса include guard и именем файла. этот ответ неверен., @Juraj
Это странно, но это решило мою проблему, @Spyro 999
Возможно, имя макроса guard должно совпадать с именем, используемым в #include основного скетча, но теперь это работает, я сделал это, @Spyro 999
нет. #включить принимает имя файла. и его не волнует содержимое файла, @Juraj
В любом случае, это сработало, @Spyro 999
так что измените его обратно, и вы увидите, что он все равно будет работать, @Juraj
Я сейчас в рабочей поездке, и мой компьютер дома, @Spyro 999
Извините, Спайро, этот ответ абсолютно бессмыслен - занижен., @SusanW
- Как удалить элемент из массива arduino?
- Почему IDE не может найти плату, несмотря на то, что она четко видна и выбрана?
- Как вернуть значение массива символов в функции Arduino IDE?
- Проблема с функцией, имеющей параметр со значением по умолчанию
- Ошибка: Переменная или поле объявлены недействительными
- Ошибка соединения Arduino Firebase с отказом
- 7-сегментный дисплей с WS2312B и FastLED
- Что мне делать с StackOverflow при ошибке компиляции?
для меня он компилируется. у вас есть файл заголовка как tab в IDE?, @Juraj
Где именно находится ваш заголовочный файл? В той же папке, что и основной скетч? Или в папке "Библиотеки"?, @chrisl
Это не тот способ, которым вы разделяете свой проект на модули. В заголовочном файле вы объявляете, что ваш модуль предлагает _publically_. Реализация переходит в другой файл C++ , и он будет скомпилирован отдельно. -- Пожалуйста, возьмите хорошую книгу по базовому программированию на C++ и/или Arduino и прочитайте ее. Этот вопрос слишком широк, чтобы ответить на вопрос SE/Arduino., @the busybee
Этот файл заголовка был создан с помощью кнопки "Новый файл" в редакторе Arduino и находится в той же папке, что и основной скетч., @Spyro 999
File->New, создает новый скетч, @Juraj