String в многофайловом проекте
Пишу многофайловый проект в arduinoIDE.
Имеется главный файл mainFile.ino и два модуля - f1.cpp и functions.h. Во всех модулях юзается связка:
#ifndef SOME_NAME #define SOME_NAME //код #endif
Они связаны следующим образом: в mainFile.ino включен functions.h, а в functions.h объявляется функция f1():
#ifndef F1 #define F1 void f1(); #endif
Реализация записана в f1.cpp и там также включен functions.h.
Проблема следующая: когда я объявляю переменную String s в mainFile.ino, всё компилится отлично, без добавления каких-либо библиотек. Но когда пытаюсь взаимодействовать со String (объявить переменную или добавить ее в качестве аргумента функции) в модулях f1.cpp и functions.h, компилятор пишет, что String was not declared in this score.
Добавление в модульные файлы
#include <string>
не помогло (что перед #ifndef/#define, что внутри).
Подскажите, пожалуйста, в чем может быть проблема?
Класс String из библиотеки avr, определен в заголовочном файле WString.h, и он отличается от std::string (из <string>). Мне сложно понять зачем они изобрели собственный тип, а не использовали стандартный.
Строчка #include <WString.h> в модульном файле решила проблему