-
Экспериментируете, разбираетесь, ищете подсказки в инете.
-
Если совсем сложно с какими-то темами, то идете на специализированный форум по С++, где высокая активность, формулируете вопрос, получаете подсказки/ответы (не знаю можно ли тут ссылки публиковать, но если надо, могу в личку скинуть).
cyberforum я знаю только. вроде неплохой фооум и по ардуино раздел тоже есть.
Тогда не очень понятно в чём сложности. На обозначенном форуме достаточно высокая активность (по крайней мере в разделах по популярным языкам/платформам), так что всегда можно задать вопрос любого уровня и почти наверняка получить ответ по существу. Книги тоже есть в свободном доступе, и Stack Overflow, и Метанит. А хорошо развитые средства отладки, в той же VS, позволяют легко изучать поведение кода по шагам, разбираясь в непонятных моментах.
а как это работает?
Как пользоваться пошаговой отладкой?
Про cout<<
Давайте я расскажу простым языком, как это сделать для ардуино Уно/Нано без СМС и регистрации.
Первым на форуме этот трюк показал ЕвгенийП.
- нам понадобится имя
cout
добавим в код, передsetup()
строчку:
constexpr Stream & cout = Serial;
Можно не константным выражением, а дефайном:
#define cout Serial
Вообще не принципиально. Макросы не проверяют ошибки. При программировании “в онду харю” - автор сам решает, нужна ему помощь в отладке от компилятора или нет.
- Добавляем перегрузку оператора
<<
:
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);
}
Вот фото Вокви с примером работы:
Вся эта базовая информация есть и на разных обучающих ресурсах, и на официальном сайте MS. Достаточно в Гугле написать “visual studio отладка” и получить ссылку на соответствующую статью.
Во! Еще с УК и рукой от терминатора не разобрался, а уже методологические советы раздает старожилам! ))
Так там всё просто оказалось в итоге (ну, кроме паяльника).
Пришли с паяльником в УК, а они Вас не правильно поняли? Или правильно?
Спойлер
…понять и простить … и вынуть паяльник (С)
Не. Первый раз в жизни воспользовался паяльником. Пытался припаять ноги к микрофонному модулю. Посмотрел несколько обучающих видео, сделал всё так же, но оказалось, что это не так-то просто. Так что результат хоть и получился, но явно кривой и чисто благодаря везению.
Паяльник приходит с опытом. Это не наука, это ремесло. Сварщики, молчать!
Спойлер
С чисто научными целями, сходите пожалуйста в УК с паяльником и предложите им на выбор выдать вам ключи или вы воспользуетесь принесенным прибором. Результаты встречи доведите до сведения общественности
Само собой. Потому и обозначил, что это самое сложное. Остальное (в той моей задаче) - лишь вопрос минимальных знаний и экспериментов. А для освоения паяльника придётся тренироваться.
Это самое сложное, только если словил паркинсона. Для большинства актуальнее альцгеймер
очень интересно. сохраню это с книгами вместе. но запись конечно сильно необычная и сложная. буду с простого начинать
Вот тут есть по шагам и с кучей примеров -
https://coderbooks.ru/books/c_plus_plus/samouchitel_uroki_po_c_ravesli_2022/
спасибо.гляну
а почему здесь написано std::cout << a;
вместо просто cout << a;
в других книгах эта запись обрезана. это связано с версией WS ?
#include <iostream>
int main()
{
int a = 1;
std::cout << a;
return 0;
}
а там тоже был std только так записан и здесь почитал.
#include <iostream>
using namespace std; // здесь обьявлен std
int main()
{
int a = 1;
cout << a;
return 0;
}
Попробуйте сначала читать и пытаться разобраться, а только потом задавать вопросы. Вам же не три года.