AFAIK, это особенность, встроенная в Arduino IDE. Лучший обходной путь, который я могу придумать, - это структура файла, например:
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
где myproj.cpp просто #include
main.cpp. Это должно оставить ваши файлы проекта «чистыми», чтобы они работали и в более типичной среде.
Обновить:
Я заимствовал имя «main» из вашего вопроса, но, если подумать, «main» - это зарезервированное имя, в частности, каждая программа на C или C ++ имеет main.c или main.cpp в качестве кода верхнего уровня, предоставляемого системой, если Вы не предоставляете один. Поэтому я избегал использовать его в качестве имени папки и проекта (но не стесняйтесь попробовать) и обновил диаграмму. Что вам нужно, так это папка проекта и файл .ino внутри нее с тем же именем. Файл .ino может
#include <src/anything-else-you-like>
Например, ваш файл кода верхнего уровня, тянущий все остальное. Возможно, вам понадобится ваш .ino для #include
каждого из файлов в src
папке, если компилятор сам не определится, это то, где находятся ваши другие файлы.
Кстати, если вы используете имя main.cpp для вашего верхнего файла, ему придется вызывать функции setup () и loop () (и функцию последовательного события, если вы используете это). Вероятно, лучше оставить имя main главным, позвольте системе предоставить ту же самую главную, которую каждая программа Arduino получает по умолчанию, и написать свой код проекта типичным способом Arduino - начиная с setup () и loop ().
myproj.cpp
ты имеешь в видуmyproj.ino
? Потому что я не вижу, гдеmyproj.cpp
это!