powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с синтаксисом<не понимаю что это>
25 сообщений из 37, страница 1 из 2
Помогите с синтаксисом<не понимаю что это>
    #40117623
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ардуино использует язык С++ хоть и врезанный
В известных справочниках ничего не нашел об этом
Вот пример кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#include <FastLED.h>
#define NUM_LEDS 100

CRGBArray<NUM_LEDS> leds;

void setup() { FastLED.addLeds<NEOPIXEL,6>(leds, NUM_LEDS); }

void loop(){ 
  static uint8_t hue;
  for(int i = 0; i < NUM_LEDS/2; i++) {   
    // fade everything out
    leds.fadeToBlackBy(40);

    // let's set an led value
    leds[i] = CHSV(hue++,255,255);

    // now, let's first 20 leds to the top 20 leds, 
    leds(NUM_LEDS/2,NUM_LEDS-1) = leds(NUM_LEDS/2 - 1 ,0);
    FastLED.delay(33);
  }
}



Интересует:
CRGBArray <NUM_LEDS> leds;
Здесь тоже самое
FastLED.addLeds < NEOPIXEL,6 > (leds, NUM_LEDS);


Подключение библиотеки принято писать
#include <FastLED.h>
С этим смирился. Почему нужно использовать < > не знаю, но все так делают...
Но в этой библиотеке нашел например вот это
Код: plaintext
1.
template<template<EOrder RGB_ORDER> class CHIPSET, EOrder RGB_ORDER>


Не понимаю..
Хоть как называется подскажите, а я уже сам найду почитаю
Спасибо
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117628
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://en.cppreference.com/w/cpp/language/templates
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117631
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Спасибо
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117637
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159
Код: plaintext
1.
2.
3.
#define NUM_LEDS 100

CRGBArray<NUM_LEDS> leds;

Это бардак и издевательство. Оно вообще не должно компилироваться.
Шаблон должен принимать в качестве типа тип а не константу.


Андрей159
Код: plaintext
1.
void setup() { FastLED.addLeds<NEOPIXEL,6>(leds, NUM_LEDS); }

Тоже самое. Не известно что там за NEOPIXEL прячется, но шестерка в качестве второго параметра???


Андрей159

Подключение библиотеки принято писать
#include <FastLED.h>
С этим смирился. Почему нужно использовать < > не знаю, но все так делают...
Вот это как раз нормально, пришло из С.
В С было заявлено что подключаемый файл в угловых скобках ищется во всех каталогах заявленных как библиотечные. Те что настроены как библиотечные при сборки компилятора. Например /usr/include:/usr/local/include на юниксах, и аналогичные на виндовых компиляторах. К ним добавляются каталоги заданные ключём -I.
Альтернативой к угловым скобкам являются двойные кавычки - они означают что искать подключаемый файл надо начиная с текущего каталога (обычно это основной каталог проекта).
В С++ эта традиция продолжилась. Так что если видишь #include <file> это библиотечный заголовок, а #include "file" это местный, принадлежащий конкретно этому проекту.



Андрей159
Но в этой библиотеке нашел например вот это
Код: plaintext
1.
template<template<EOrder RGB_ORDER> class CHIPSET, EOrder RGB_ORDER>

А это профанация шаблонов.
Смысл шаблона в том, что можно задать некую функцию/класс и объявить что она работает с каким-то абстрактным типом. А потом, по факту создания объекта уже задать конкретный тип и компилятор уместит этот тип внутрь функции.
А тут мы видим создание шаблона на конкретном типе.... И смысл это делать шаблоном?
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117643
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Андрей159
Код: plaintext
1.
2.
3.
#define NUM_LEDS 100

CRGBArray<NUM_LEDS> leds;

Это бардак и издевательство. Оно вообще не должно компилироваться.
Шаблон должен принимать в качестве типа тип а не константу.

А как же std::array ?

Я подозреваю все ради того чтобы на стэке место под массив выделить.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117708
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Это бардак и издевательство. Оно вообще не должно компилироваться.
Шаблон должен принимать в качестве типа тип а не константу.

Это вам в Rust :)
Там кажется шаблоны еще не умеют non-type params (но обещают сделать).
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117779
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока что до конца не понял. Попробую с нуля проект создавать и поиграюсь. Думал прокачаюсь, но толком объяснений не нашел. Придётся экспериментировать.

Наверное Здесь и лежит библиотека . Правда я подключал ее по другому, указав только FastLED, а остальное само подгрузилось в качестве библиотеки, но проверял по содержимому, вроде как одно и тоже.

В папке SRC есть файл FastLED.h
При записи
Код: plaintext
1.
static CLEDController &addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0);


уже каша в голове, а при
Код: plaintext
1.
static CHIPSET<RGB> c;


(в строке 364) вообще полное непонимание что происходит

Проект запускается на микроконтроллере Arduino Nano/Mega, но если подключить (инсталлировать) библиотеку, а если файлы скопировать в одну папку к проекту, то ошибка, хотя должно было работать

Возможно мне стоит поучить язык С глубже
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117782
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159
Возможно мне стоит поучить язык С глубже

Я бы советовал какую-нибудь книжку прочитать. Тут есть такие конструкции, аналоги которых в других ЯП просто отсутствуют.

PS У тебя С++, это не С.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117804
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159,

Код: plaintext
1.
static CLEDController &addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0);


Тут объявляется прототип функции addLeds, сама функция где-то ниже определена.

Код: plaintext
1.
static CHIPSET<RGB> c;


А тут - глобальная переменная "с" с типом CHIPSET<RGB>.

Это если честно основы, без знания которых написание программ ни на С ни на С++ невозможно.
Поэтому начинать надо с литературы для начинающих, в данном случае по С++.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117811
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заметили, что программистов все больше и больше, обучения на каждой шагу, а нужной информации становится все меньше и меньше, точнее мало кто освещает. Все разбросано, море неразберихи. Как раз тот случай, когда нужно действительно возвращаться к книгам, так как в интернете один копипаст и то слизан из слабеньких источников. В источниках об Ардуино нигде ни слова о том что я ищу.
P.S. Сорян за баян.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117815
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про С++ можешь тут почитать .
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117816
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159
Заметили, что программистов все больше и больше
«Программистов», которые вместо гугления чего-нибудь вроде «c++ angle brackets» или чтения книг лезут на форумы создавать темы с подобными вопросами, похоже, действительно всё больше.
Андрей159
В источниках об Ардуино нигде ни слова о том что я ищу.
Возможно, потому, что источники об Ардуино должны говорить об Ардуино, а не учить основам языка?
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117863
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159
Заметили, что программистов все больше и больше, обучения на каждой шагу, а нужной информации становится все меньше и меньше, точнее мало кто освещает. Все разбросано, море неразберихи. Как раз тот случай, когда нужно действительно возвращаться к книгам, так как в интернете один копипаст и то слизан из слабеньких источников. В источниках об Ардуино нигде ни слова о том что я ищу.
P.S. Сорян за баян.

Я заметил что 25 лет назад я вообще не мог ничего найти. Нужно было ходить к преподу или к старшекурсникам.
Или идти в местную научно-техническую библиотеку и искать книги по теме. Или топтать F1 в среде Borland или
TechHelp. И то не факт...

Сегодня ты имеешь шанс найти то что нужно. Сможешь ли воспользоваться шансом - зависит от тебя.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117875
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

позволю себе такое некомпетентное мнение:
На мой взгляд, на сегодня, по целому ряду, в том числе сугубо исторических причин,
C++ в целом - язык с зашкварно высоким порогом вхождения.
Даже для людей с более или менее, хотя бы приблизительно сформированным "программистским" мышлением.

Ох, а я, к сожалению, знаю детские кружки, где ребята 10-12 лет "программируют" на С++.
Выглядит это как душераздирающее зрелище, когда такой ребёнок говорит тебе - "я программирую на C++".
Ну да, задачки там вроде тех пресловутых начальных Литкодовых, всякий и мальчик и девочка из кружка щёлкает их с превеликим удовольствием.
Но глазам на код смотреть больно.

Что это - даже точно определить затрудняюсь.
В плане наработки некоего первичного алгоритмического тулбокса - так можно делать, в расчете на то,
что собственно владение именно языком, во всем его многообразии, придет потом, а сейчас надо дать пощупать в пальцах алгоритмы.
И придет именно потому, что у детей сохраняется возможность и к преподавателю подойти и со "старшекурсниками" о чем-то перетереть...

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

Как-то хотелось бы думать, что было бы хорошо, если бы у каждого котенка было ощущение, что он нечто целое и самостоятельный интерес представляющее, может делать в каждый конкретный момент времени.
А так им приходится скелетики из спичек собирать, методом написания бессмысленных циклов в стиле
"точка-точка, огуречик, вот и вышел человечек".
Про циклы им уже рассказали, а как искать его инвариант - дети уже интуитивно поняли, но словей таких еще не знают...

"Повбивав бы" изобретателей таких кружков...
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае речь идет скорее о кружке Ардуино. А там С++ не особо важен.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117902
a.guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby
C++ в целом - язык с зашкварно высоким порогом вхождения.
Даже для людей с более или менее, хотя бы приблизительно сформированным "программистским" мышлением.
Особенно для людей, чьё мышление сформировал VisualBasic [for Applications].
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117919
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что С++ является не сложным а скорее "спорным" языком. Ни в одном ЯП нет
такого числа технических споров вокруг решения какой-либо бизнес задачи. Причем
чем сильнее мы выходим из контекста языка С++ в интеграцию с другими языками
и сетевыми протоколами - тем сильнее и жарче идут дебаты а том сколько бит в целом числе или
в какой кодировке была передана строка. Или как правильно кастить void * на объект.
О строках можно складывать легенды. Даже в этом подфоруме раз в квартал возникает спор об utf-8 или национальной
кодировке. В других языках подобные споры - вялые и неярко выраженные. И сам спорный
вопрос просто вынесен за скобки языка. Вы не создадите спора просто пользуя язык.

Дидактические свойства С++ просто ужасны. Тут я просто готов согласиться с Столяровым в том
что рассказать на первой лекции что такое взятие адреса переменной в scanf - то это заберет
пару лекций и еще отобъет желание изучать язык вообще. И понятное дело - сообщения об ошибках
компиллятора С++ адресованы профессионалам. Их нельзя показывать школьникам. От этого
школьники впадают в тоску и уходят в тик-ток.

Вобщем сложное это дело... обучение.

Ко всем остальным свойствам С++ это не относится. Во всём остальном (геймдев и хайлоад) он прекрасен.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117927
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a.guest,

Ах, оставили бы вы эти изыски от Дейкстры.
Мое мышление формировал Fortran, а Basic - да был, и, хоть и потерял исходное родство, и даже умер по сути ,
но некоторые первородные черты сходства с фортраном сохранял почти до последнего момента.
Не было бы фортрана - в прикладном программировании вообще ничего не было бы.
Всё вообще, что произошло, происходило под лозунгом "мы сделаем либо лучше, либо проще, чем Fortran".

Кстати, когда мне, примерно в 87м (если память не сильно обманывает) всучили 5-дюймовою дискету и сказали
- "на ней CP/M и новый язык С", моя естественная реакция была тогда такая:
- Ну, и зачем нам это языковое убожество, в условиях, когда Pascal уже 15 лет как существует, а фортран на днях 40-летие отметит?

Здорово, что компилятор так мало места занимает, но мы же не собираемся на этом писать бессмысленные операционные системы. Это вообще не наша задача .
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117938
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анализировал. В Бейсике только очень не хватало упрощения в работе с объектами и массивами (что языках помоложе потом сделали). Вот любимый кого-то Пайтон - почти тот же Бейсик, кросплатформенный, но такой медленный. И .net медленный. Красавчик Java Script - простой, но быстрый. Прочитал две библии: Visual Basic 6 и C++. В Visual о классах можна найти почти в конце книги, а С++ с классов начинается. Разницы большой нет, но по быстродействию VB6 будет работать медленней, если делать обертки классами. В книге С++ учат мыслить даже простые задачи классами. Я видел как умер проект ImageCMS (интернет магазин) сделанный на PHP какими-то Сишниками. Они абсолютно все обернули по несколько раз в классы. Интернет магазин не выдерживал простой нагрузки. Потом подумали и решили переписали на WordPress)))) кинув своих клиентов. Ну короче... Сказать, что Visual Basic пипец какое ничтожество... никогда не скажу.. наоборот он быстрый и досих пор пользуюсь. Его ведь включили в офис. Все и так устраивало, но со временем пришлось учить Си подобные синтаксисы через миграцию в веб программирование и интерес к новым языкам только рос, но я не обсуждаю языки в которых не программировал. Еще в современных языках с помощью include можно подключать код из разных мест. В VB это и многое другое было упрощено и вообще скрыто. В остальном все похоже, за исключением работы компиляторов. Каждый язык заслуживает уважения. Но вот современное программирование это уже не программирование, а инсталляция. Инсталировал с ГитХаба одно, другое и уже все работает. Но спустя какое-то время все начинает отваливаться. Версия языка изменилась. Внезапно Гугл в API перестает поддерживать старую версию и принуждает подняться до последней версии, другие модули выдают непонятные ошибки - в итоге все развалилось. Ладно если проект собственный, а как можно гарантировать клиентам на долгий срок? Мыльный пузырь современные языки. Все красиво и стремительно. Еще один язык толком не выучили, а уже используют язык в языке: Vue, React, Angular. Для каких целей? Обычную страницу отобразить? Серьёзно? Почему Го не популярен если он может использовать все ядра? Не язык плохой. Штамповать на нем не интересно компаниям. Нужен дешевый конвейер, дешевая раб сила и поток клиентов. Visual сюда никак не вписался. Всего лишь.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117940
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159
И .net медленный.

Почему медленный? Есть какой-то сравнительный тест? И что было эталлоном в сравнении?
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117942
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверял только на циклах с числами long с тройным вложением. Работает .NET в два раза медленней чем VB6. Пайтон, не помню, почти в 10 раз. JS приблизительно одинаково. С++ был быстрее больше чем в два раза (не акцентировал внимание). Замер подбирал приблизительно на ожидание в 30 секунд времени начиная с VB6. Использовал студию 2019 Enterprise 16.4.0 и предыдущую которую уже снес. Там что на одном языке, что на другом - тест отработает одинаково
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117945
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159
Проверял только на циклах с числами long с тройным вложением. Работает .NET в два раза медленней чем VB6.

Отакзываюсь в это поверить. Возможно эксперимент мерял побочный эффект (JIT включился как раз в эти 30 секунд).
Или VB6 просто ничего не делал выбросив цикл из вычислений. Такое тоже бывает.

Можешь показать сорцы?
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117961
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Андрей159
Проверял только на циклах с числами long с тройным вложением. Работает .NET в два раза медленней чем VB6.

Отакзываюсь в это поверить. Возможно эксперимент мерял побочный эффект (JIT включился как раз в эти 30 секунд).
Или VB6 просто ничего не делал выбросив цикл из вычислений. Такое тоже бывает.

Можешь показать сорцы?

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

Это как раз одна из черт, общая для бейсика и исходного фортрана (которую он утерял с переходом к оптимизирующим компиляторам)
- уважение к тому, что написал программист. Что написано, то и проиграно, и не надо ни в каких местах местах
драть на себе волосы от приливающего в мозг восторга в результате деятельности оптимизатора.

Но его учили компилироваться в "нативный" код, с отключением проверки попадания индекса в границы массива.
Так что, вдвое быстрее работающий C это не то, что-бы совсем уж вранье, но при аккуратном подходе, и не перебарщивая с вызовом встроенных функций, процентов 30 сишному коду можно было надежно выигрывать проигрывать.
Уж, для VB6 - точно, его сделали совершенным во всех внутренних кишках com-клиентом, даже там, где в этом не было видно никакой особой необходимости.
Предшествующий ему VB5 в тех же режимах компиляции и на тех же циклах работал отчетливо на 15-20 процентов быстрее.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40117977
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159
Проверял только на циклах с числами long с тройным вложением. Работает .NET в два раза медленней чем VB6. Пайтон, не помню, почти в 10 раз. JS приблизительно одинаково. С++ был быстрее больше чем в два раза (не акцентировал внимание). Замер подбирал приблизительно на ожидание в 30 секунд времени начиная с VB6. Использовал студию 2019 Enterprise 16.4.0 и предыдущую которую уже снес. Там что на одном языке, что на другом - тест отработает одинаково

В VS2019 нет VB6, есть VB.Net. Т.е. код на VB компилируется в .Net

С тестами надо поаккуратней, т.к. компиляторы нынче имеют достаточно продвинутые оптимизаторы, которые могут просто заменить какой-нибудь тестовый расчет в цикле на готовый результат.
...
Рейтинг: 0 / 0
Помогите с синтаксисом<не понимаю что это>
    #40118011
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
берем из чулана Ящик с Win2000/WinXP и вперед
вот там и надо проверять
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с синтаксисом<не понимаю что это>
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]