String в многофайловом проекте

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> в модульном файле решила проблему

Report Page