Странная работа компилятора (или прекомпилятора?) IDE
- Войдите на сайт для отправки комментариев
Добрый день! Прошу помощи, всю голову сломал. Поиск не дал результатов.
Имеем проект из двух очень простых файлов.
Вариант 1.
Данный вариант компилируется без ошибок
Файл 1, test.ino:
#include <LiquidCrystalRus.h>
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Файл 2, test2.cpp:
#include <LiquidCrystalRus.h>
Теперь вариант 2.
Все то же самое, только в файле test.ino комментируем первую строчку с include (эта библитоека там и не используется по факту)
Файл 1, test.ino:
//#include <LiquidCrystalRus.h>
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Файл 2, test2.cpp (без изменений):
#include <LiquidCrystalRus.h>
И о ужас :) проект перестает компилироваться, выдается ошибка:
test2.cpp:1:30: fatal error: LiquidCrystalRus.h: No such file or directory
#include <LiquidCrystalRus.h>
^
Библиотека точно присутствует (и в первом варианте без проблем все).
Если вместо библиотечного хидера задавать локальный заголовок из проекта типа:
#include "test.h"
то все работает в обоих вариантах.
Что не так, подскажите, пожалуйста.
Особенность компоновки проекта в IDE. Просто знайте и не берите в голову.
Препроцессор, будьте грамотны-с.
Особенность компоновки проекта в IDE. Просто знайте и не берите в голову.
Однако сей факт не позволяет инкапсулировать весь код, касающийся отдельного класса, в отдельном файле. Придется в любом случае заголовочный файл (как написано в примере), дублировать в главном файле проекта. Или я не правильно понимаю?
Постараюсь :) Однако я программировал на С++ последний раз лет этак почти 15 назад, и сейчас сходу не все вспоминается. Но так и предполагал.
Однако сей факт не позволяет инкапсулировать весь код, касающийся отдельного класса, в отдельном файле. Придется в любом случае заголовочный файл (как написано в примере), дублировать в главном файле проекта. Или я не правильно понимаю?
Ну, можете полный путь указать, но это как-то некомильфо.