Как написать свою библиотеку?

  1. Экспериментируете, разбираетесь, ищете подсказки в инете.

  2. Если совсем сложно с какими-то темами, то идете на специализированный форум по С++, где высокая активность, формулируете вопрос, получаете подсказки/ответы (не знаю можно ли тут ссылки публиковать, но если надо, могу в личку скинуть).

cyberforum я знаю только. вроде неплохой фооум и по ардуино раздел тоже есть.

Тогда не очень понятно в чём сложности. На обозначенном форуме достаточно высокая активность (по крайней мере в разделах по популярным языкам/платформам), так что всегда можно задать вопрос любого уровня и почти наверняка получить ответ по существу. Книги тоже есть в свободном доступе, и Stack Overflow, и Метанит. А хорошо развитые средства отладки, в той же VS, позволяют легко изучать поведение кода по шагам, разбираясь в непонятных моментах.

а как это работает?
Как пользоваться пошаговой отладкой?

Про cout<<

Давайте я расскажу простым языком, как это сделать для ардуино Уно/Нано без СМС и регистрации.
Первым на форуме этот трюк показал ЕвгенийП.

  1. нам понадобится имя cout
    добавим в код, перед setup() строчку:
constexpr Stream & cout = Serial;

Можно не константным выражением, а дефайном:

#define  cout  Serial

Вообще не принципиально. Макросы не проверяют ошибки. При программировании “в онду харю” - автор сам решает, нужна ему помощь в отладке от компилятора или нет.

  1. Добавляем перегрузку оператора << :
operator<< (Stream &s, T a) { s.print(a);}

Но ТИП того, что мы желаем напечатать может быть разным, да? Для таких вещей придуманы ШАБЛОНЫ:

template<typename T> Stream& operator<< (Stream &s, T a) {
  s.print(a);
  return s;
}

Для многих новичков шаблоны - загадка. Прочту “вслух”:
Шаблон <по различным типам, далее обозначенным Т>
Оператор “<<” применяется к “s”, типа “ссылка на Stream”, слева от знака и аргументу “a”, типа Т, справа от знака. При исполнении оператора следует вывести в поток по ссылке “s” аргумент “a” и вернуть ссылку “s” для дальнейшего использования.


Я нарочно написал “канцелярским” языком, для точного понимания. Зачем мы возвращаем ссылку на поток? Для того, чтобы можно было писать “<<” каскадом. Результат первой стрелки - тот же самый cout, который мы поставили слева и мы СНОВА можем рисовать стрелку.


Вот пример кода:

template<typename T> Stream& operator<< (Stream &s, T a) {
  s.print(a);
  return s;
}

constexpr Stream & cout = Serial;

void setup() {
  Serial.begin(115200);

  cout << "Поехали!\n";

}

void loop() {
  static int i = 0;
  cout << "Мама мыла раму уже " << i++ << " раз!" << '\n';
  delay(1000);
}

Вот фото Вокви с примером работы:

3 лайка

Вся эта базовая информация есть и на разных обучающих ресурсах, и на официальном сайте MS. Достаточно в Гугле написать “visual studio отладка” и получить ссылку на соответствующую статью.

1 лайк

Во! Еще с УК и рукой от терминатора не разобрался, а уже методологические советы раздает старожилам! ))

Так там всё просто оказалось в итоге (ну, кроме паяльника).

Пришли с паяльником в УК, а они Вас не правильно поняли? :slight_smile: Или правильно?

Спойлер

…понять и простить … и вынуть паяльник (С)

Не. Первый раз в жизни воспользовался паяльником. Пытался припаять ноги к микрофонному модулю. Посмотрел несколько обучающих видео, сделал всё так же, но оказалось, что это не так-то просто. Так что результат хоть и получился, но явно кривой и чисто благодаря везению.

Паяльник приходит с опытом. Это не наука, это ремесло. Сварщики, молчать!

Спойлер

С чисто научными целями, сходите пожалуйста в УК с паяльником и предложите им на выбор выдать вам ключи или вы воспользуетесь принесенным прибором. Результаты встречи доведите до сведения общественности

1 лайк

Само собой. Потому и обозначил, что это самое сложное. Остальное (в той моей задаче) - лишь вопрос минимальных знаний и экспериментов. А для освоения паяльника придётся тренироваться.

Это самое сложное, только если словил паркинсона. Для большинства актуальнее альцгеймер

очень интересно. сохраню это с книгами вместе. но запись конечно сильно необычная и сложная. буду с простого начинать

Вот тут есть по шагам и с кучей примеров -
https://coderbooks.ru/books/c_plus_plus/samouchitel_uroki_po_c_ravesli_2022/

2 лайка

спасибо.гляну

а почему здесь написано std::cout << a; вместо просто cout << a;
в других книгах эта запись обрезана. это связано с версией WS ?

#include <iostream>

 int main()
 {

 int a = 1;


 std::cout << a;

return 0;
 }
1 лайк

а там тоже был std только так записан и здесь почитал.

#include <iostream>
using namespace std;     // здесь обьявлен std 
 int main()
 {

 int a = 1;


cout << a;

return 0;
 }

Попробуйте сначала читать и пытаться разобраться, а только потом задавать вопросы. Вам же не три года.