Змінюй хід війни! Допомагай ЗСУ!

Требуется услуги специалиста на Arduino

  • Автор теми Автор теми ukrtop
  • Дата створення Дата створення
Наприклад різні задрочки з вказівниками - повернення функцією вказівника наприклад. Юзав колись? Ну окрім випадків використання готових функцій виділення пам'яті.
А чому? Бо муторно. В плюсах об'єкти автоматом передаються за посиланням, там ти постійно повертаєш вказівники фактично, а тут це муторно та *** не треба по суті, якщо треба якісь масиви в функцію чи назовні ганяти, то цей масив вже створений та передається й повертається як аргумент - але так простіше й зрозуміліше.
 
Наприклад різні задрочки з вказівниками - повернення функцією вказівника наприклад. Юзав колись?

Кожного дня юзаю.

Приклади:
1. Кастомні реалізаціі функцій що працюють зі строками. Ті яких немае у стандартних лібах.
2. Вказівник на строку або на двомірний массив що залежить від аргументу. Наприклад, функія що вертає зрозумілй опис помилки в залежності від коду помилки.
3. Вказівник на массив вказівників функцій що є інтерфейсом драйверу. Единий інтерфейс та дохуя драйверів, ти береш той що тобі треба.

Взагалі якщо навчитися юзати вказівники це добряче полегшує життя.
 
Либо остутсвует понимание задачи, либо навык формализации задачи в ТЗ, либо это R&D в полный рост и значит так и должно быть.
Все в куче плюс еще с десяток причин... Это нормальная ситуация на стадии разработки...


Вообще нихера не разумная. Ардуино нано на сраной 168-й меге и BluePill на STM32F103C8T6 стоятодинаково 1,7 доллара на Али. Только процы отличаются как Запорожец от Белаза.
Похрен. "пара баксов" - это разумно.
 
Код:
String inputString = "";         // a string to hold incoming data

  // reserve 200 bytes for the inputString:
inputString.reserve(200);
Подскажите, плз, что именно делает reserve?
Я правильно понимаю, что резервирует обьем памяти под переменную в 200 байт? Т.е. можно самому определить обьем памяти для переменной? Увеличить? Уменьшить?
Сорри, пытался загуглить - не нашел. В первый раз столкнулся....
 
Да хрен его знает. Если это Ардуина, то наверное какая то кастомная реализация класса String. Попробуй передать туда параметр равный обьему ОЗУ целевого камня, если программа наебнется или метод вернет ошибку, то так и есть.
 
Наприклад різні задрочки з вказівниками - повернення функцією вказівника наприклад. Юзав колись? Ну окрім випадків використання готових функцій виділення пам'яті.
А чому? Бо муторно. В плюсах об'єкти автоматом передаються за посиланням, там ти постійно повертаєш вказівники фактично, а тут це муторно та *** не треба по суті, якщо треба якісь масиви в функцію чи назовні ганяти, то цей масив вже створений та передається й повертається як аргумент - але так простіше й зрозуміліше.

В плюсах ты можешь безнаказанно использовать Cшный синтаксис и передавать &myarray[0]. Кто мешает?
Я вообще не понял что за проблема такая.
 
:незнаю:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Мдя! А я ведь искал, но видимо - хреново... Спасибо!

Хотя, я так и не понял... Выделил ячейку в 20 байт, загнал туда строчку в 40+ байт. Все нормально влезло.... :незнаю:
 
Хотя, я так и не понял... Выделил ячейку в 20 байт, загнал туда строчку в 40+ байт. Все нормально влезло....
Это означает одно - либу писали рукожопы, которые забили болт на проверку длины передаваемого аргумента.
Оно то влезло, но это до поры до времени, пока за выделенным массивом есть незанятая память, а если там лежали какие то переменные то будут перетерты и программа будет работать неправильно или вообще все рухнет.
 
В плюсах ты можешь безнаказанно использовать Cшный синтаксис и передавать &myarray[0]. Кто мешает?
Я вообще не понял что за проблема такая.
Да и в Си никто не мешает передавать просто имя массива в качестве аргумента.

func(array) эквивалентно func(&array[0]).
 
либу писали рукожопы
не обязательно
может быть он неявно цепляет realloc
а может - "загнать 40 байт" - можно, но там останется только 20 байт :D можно и 100500 загнать
загнал туда строчку в 40+ байт. Все нормально влезло....
по какому критерию "влезло"?
 
Да и в Си никто не мешает передавать просто имя массива в качестве аргумента.
плюсы хороши rtti, темплейтами и операторами, но операторы - это птичий язык и write-only стиль,
темплейты лучше избегать если пишете не для экспериментов, а rtti не влезут :D:D:D
 
а может - "загнать 40 байт" - можно, но там останется только 20 байт :D можно и 100500 загнать

по какому критерию "влезло"?
Вот я так и думал... А оказалось, что сколько загнал, столько и обратно вылезло... ;-(
 
Это означает одно - либу писали рукожопы, которые забили болт на проверку длины передаваемого аргумента.
Оно то влезло, но это до поры до времени, пока за выделенным массивом есть незанятая память, а если там лежали какие то переменные то будут перетерты и программа будет работать неправильно или вообще все рухнет.

Гм.. ;-)
Я ограничил на 20 байт
Загнал туда 40.
После сего - выкинул обратно переменную.
Оказалось, что пох на ограничения. Сколько загнал, столько и вылезло.
:незнаю:
 
Вот я так и думал... А оказалось, что сколько загнал, столько и обратно вылезло... ;-(
поздравляю
значит оно кучу переопределяет
в принципе - ничего страшного, как для Ардуины :D:D:D
 
Гм... Я тут ковырялся и наткнулся на вариант "ардуины на процессоре STM32". ну, по крайней мере для меня оно так звучит. Я так понял, побольше возможностей за меньшую цену... Захотелось поковырять... ;-)
речь об этом:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Вопрос, а может еще что-то похожее есть?
 
Назад
Зверху Знизу