Объявление библиотек. Как правильно подключать библиотеки
- Войдите на сайт для отправки комментариев
Всем привет! У меня есть два вопроса по подключению библиотек.
1) В чем разница между "" и <> в подключении библиотеки? Пример:
#include "SPI.h" #include <SPI.h>
Я знаю что это разный способ подключения библиотек (библиотеки берутся из разных мест). Но я не смог найти по этому поводу информации. Можете объяснить что к чему, или дайте ссылку, где об этом можно почитать.
2) Как указать какую именно библиотеку компилятор должен использовать, если их установлено несколько? Вот пример из лога компиляции:
Несколько библиотек найдено для "SdFat.h" Используется: C:\Users\Игорь\Documents\Arduino\libraries\SdFat-master Не используется: C:\Users\Игорь\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266SdFat Не используется: C:\Users\Игорь\Documents\Arduino\libraries\SdFat_-_Adafruit_Fork Не используется: C:\Users\Игорь\Documents\Arduino\libraries\arduino_253084
Как видно, на компьютере установлено несколько одинаковых библиотек, Как мне указать какую именно нужно использовать?
И еще вопрос, вытекающий из предыдущего:
Библиотека SdFat.h автоматически подтягивается из библиотеки SD.h , если я могу явно указать библиотеку SD.h, то какую библиотеку SdFat.h использовать выбирает уже компилятор. И часто выбирает не ту что нужно. Как мне указать компилятору откуда брать библиотеки?
Надеюсь на вашу помощь!
<> ищет в папках стандартных библиотек
"" ищет сперва в папке рядом с файлом, потом в стандартных папках
.h файл и библиотека это разные вещи.
Указать что-то компилятору в среде arduino нельзя, она очень ограничена по функционалу. Если есть конфликт, то единственный способ - удалить конфликтующие элементы.
Да и зачем держать двадцать однотипных библиотек. Выберите одну рабочую и юзайте ее, чем ждать подлянки от непроверенной. ИМХО.
Всем привет! У меня есть два вопроса по подключению библиотек.
1) В чем разница между "" и <> в подключении библиотеки? Пример:
Я знаю что это разный способ подключения библиотек (библиотеки берутся из разных мест). Но я не смог найти по этому поводу информации. Можете объяснить что к чему, или дайте ссылку, где об этом можно почитать.
Дак ты не ищи на blondie.ru ты ищи там, где это есть
например, первая жэ гугал ссылка: http://www.c-cpp.ru/books/include
Спасибо за ответы. Для меня остался только один вопрос не решенным: возможно ли прямое указание пути на библиотеку?
1) В чем разница между "" и <> в подключении библиотеки? Пример:
Я знаю что это разный способ подключения библиотек (библиотеки берутся из разных мест). Но я не смог найти по этому поводу информации.
Можете объяснить что к чему, или дайте ссылку, где об этом можно почитать.
Помните анекдот про водителя - нового русского и пешехода Козлова?
Так вот, «для Вас, Козлов», мы уже дали ссылку на книгу Кернигана и Ритчи "Язык программирования Си" в самой заглавной теме раздела "Песочница". И там же написали, что без знания (знания, а не просто скачивания) материала этой книги, в программировании просто нечего делать.
Ответ на Ваш вопрос содержится в книге по ссылке, что Вам давно дали. Раздел 4.11.1 на стр. 89. Как Вы умудрились его не найти (если читали книгу) я не представляю. А если не читали, то идите и читайте - Вам дали ссылку на книгу, а пересказывать её здесь по каждому Вашему чиху, ... идите и читайте.
Так вот, «для Вас, Козлов», мы уже дали ссылку на книгу ...
Всё равно неясности.
Вот с таким объявлением скетч проходит без ошибок и с таким объявлением тоже.
Однако стоит убрать из "ИДЕ" вторую библиотеку и ошибка платы для первого варианта...
Ясно, что первая библиотека зависима от второй, не ясно как пользователь это заподозрить должен. Почему вторую просто не включить в текст первой для её самодостаточности? Наткнулся случайно, в примерах из интернетов встречаются оба варианта, ну и во внутрь библиотеки потом глянул.
Так вот, «для Вас, Козлов», мы уже дали ссылку на книгу ...
Всё равно неясности.
Вот с таким объявлением скетч проходит без ошибок и с таким объявлением тоже.
Однако стоит убрать из "ИДЕ" вторую библиотеку и ошибка платы для первого варианта...
Ясно, что первая библиотека зависима от второй, не ясно как пользователь это заподозрить должен. Почему вторую просто не включить в текст первой для её самодостаточности? Наткнулся случайно, в примерах из интернетов встречаются оба варианта, ну и во внутрь библиотеки потом глянул.
Обычно в редми к библиотеке ее зависимости указываются
Ясно, что первая библиотека зависима от второй, не ясно как пользователь это заподозрить должен.
да очень просто - начнет компилироать без второй библиотеки и компилятор ему тут же "подскажет", что ее не хватает
Почему вторую просто не включить в текст первой для её самодостаточности?
вы сами-то поняли, что предложили?
Чтобы было понятнее - вот вам абсолютно "симметричное" предложение. Почему бы вам вместо включения этих двух строчек в скетч не включить в свою программу весь текст обоих библиотек? "Для самодостаточности". ?
Что, неохота? а почему автор второй библиотеки должен копировать текст первой в свой код, к чему это бред?
Так можно ещё зависимую сверху написать и ещё, и ещё. Библиотекарство как бы в труху превращается. Надо бы тогда родословную по типу аргументов к функции прописывать - Иван родил Петра, Пётр - Александра, Александр - Светку (тут всё и началось :)
А компилятор не сильно подсказал (может конечно я чего не настроил :), кроме - ошибка для платы "Ардуино - Генуино"
Подписаться
Так можно ещё зависимую сверху написать и ещё, и ещё. Библиотекарство как бы в труху превращается. Надо бы тогда родословную по типу аргументов к функции прописывать - Иван родил Петра, Пётр - Александра, Александр - Светку (тут всё и началось :)
А компилятор не сильно подсказал (может конечно я чего не настроил :), кроме - ошибка для платы "Ардуино - Генуино"
При полном выводе сообщений он бы сказал - нет файла такого-то
может конечно я чего не настроил :)
Конечно не настроил
Файл -> Настройки -> Показать подробный вывод при _Компиляции_ _Загрузке_
Будет подробно (ну оооочень подробно) расписывать каждую ошибку
Так можно ещё зависимую сверху написать и ещё, и ещё. Библиотекарство как бы в труху превращается.
Так так и пишут. Вы никогда не ставили пакеты в Линуксе вручную? - вот где зависимости то... Нередко установка одного пакета требует поставить еще 30-40 других...