|
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
|
||||||
Что будет если добавить элемент в кольцевой буфер n+1 больший, чем размер буфера?27.05.2020, 05:47. Показов 8472. Ответов 77
Что будет если добавить элемент в кольцевой буфер n+1 больший, чем размер буфера?
Кольцевой буфер емкостью 1024 вещественных числа. Доступ к элементам буфера – как к элементам очереди. Обязательны функции-члены класса для инициализации буфера, добавления/удаления элемента, определения количества свободного/занятого пространства в буфере.
0
|
||||||
| 27.05.2020, 05:47 | |
|
Ответы с готовыми решениями:
77
Почему GetTokenInformation возвращает буфер больший, чем затребованная структура?
Что будет иметь больший вес для ПС |
|
|
||||
| 06.05.2021, 16:48 | ||||
|
Не по теме:
Ringbuffer<int, 16> маска у него другая. другая значит что маска у каждого своя. значит не общая. а статик нам говорит что она должна быть общая. как объяснить два противополжных значения ?const static int i = 10; (это объявление я так понимаю) не тоже самое что объявление вне класса int Class::i{10}; (это определение я так понимаю) ?https://create.arduino.cc/edit... 6f/preview строчка 65 что означает , ну я имею ввиду после добовления USART() стало компилироваться, но что за процессы скрываются под таким вызовом ? строчка 119 означает что когда мы создадим объект класса USART<> serial то массив serial.rx_buffer[] будет не пустой ? /в 119 строчке идёт запись в массив по прерыванию. ну как минимум так планировалось/
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 06.05.2021, 22:24 | ||
|
Объект вообще не нужен для понимания концепции static. Отталкиваться нужно от типа (в 4й раз уже говорю). Думайте. Вот подставили вы аргументы в свой шаблон - это привело к генерации нового типа. И мгновенно с этим возникла новая static-переменная. Всё, не нужны никакие объекты. Их может вообще не быть. Вы не понимаете что такое шаблон, или что? Не ясно в чем у вас затруднение. Вроде простые слова говорю. Никакой витиеватости нет. Добавлено через 2 минуты
0
|
||
|
129 / 81 / 49
Регистрация: 10.01.2020
Сообщений: 293
|
|
| 06.05.2021, 22:26 | |
|
неплохо
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 06.05.2021, 22:27 | ||
|
А на самом деле ее нет. Ringbuffer<int, 16> и Ringbuffer<int, 32> - это два разных типа. И static-переменные у них будут разные. Все объекты каждого из этих типов получат свою общую static-переменную.Все-таки вы определенно не понимаете что такое шаблон и видимо считаете параметры в угловых скобках каким-то видом инициализации данных в классе.
1
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
||
| 06.05.2021, 22:27 | ||
|
А как заходит речь о статических членах шаблонного класса, то набор синтаксисов становится еще шире.
0
|
||
|
|
|||
| 07.05.2021, 11:13 | |||
пока шаблон (или как вы говорите тип) один то все копии класса (ну объекты) будут использовать один(и общий) статик член..i=10 значит можем писать как нам больше нравиться ? или есть случаи когда один из вариантов нельзя использовать?а строчки 65 и 119 объясните пожалуйста ?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 07.05.2021, 14:02 | |||
USART (про подобный синтаксис вы уже спрашивали тут) вызывается метод buffer_write. Будет создан объект типа USART(1) с инициализацией по умолчанию, время жизни которого длится до конца выражения, у этого объекта вызывается метод buffer_write.__________________ (1) Имя USART внутри шаблонного класса означает тип с подставленными "текущими" параметрами шаблона. Т.е., например, для варианта инстанцирования USART<> (USART<uint8_t, 16>) имя USART внутри шаблонного класса это "псевдоним" для USART<uint8_t, 16>. Для варианта инстанцирования USART<uint8_t, 32> имя USART внутри шаблонного класса это "псевдоним" для USART<uint8_t, 32>.USART<> (USART<uint8_t, 16>).
0
|
|||
|
|
|
| 07.05.2021, 16:48 | |
|
DrOffset, да спасибо понял.. вообщем бесполезные вызовы ... в одном случае потому что временный и вызов этого временного равен нулю, в другом - иззатого что статические .. и кроме статических братьев они ничего не видят... а городить
static T StaticFn(Class& example) чтобы добраться до других нон-статик методов похоже избыточно
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||||
| 07.05.2021, 19:06 | |||||||||
![]() Я же писал выше: USART() приведет к созданию объекта типа USART со значением по умолчанию. Значение по умолчанию для этого типа задается конструктором по умолчанию. В том коде он реализован с помощью метода begin(). Вот и смотрите что делает begin(), чтобы понять что происходит во время USART().На самом деле было бы нагляднее, если бы метод buffer_write был приватным. Это показало бы и возможности доступа и большую целесообразность статической функции в том коде.Кликните здесь для просмотра всего текста
https://rextester.com/YJBCFR93884
0
|
|||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
||
| 08.05.2021, 02:08 | ||
|
1. Если инициализатор указан в объявлении static поля, т.е. прямо в классе, то он обычно будет располагаться в заголовочном файле. Для static const полей класса это означает, что их инициализатор будет виден во всех единицах трансляции. И во всех единицах трансляции оптимизатор будет иметь возможность подставлять фактическое значение инициализатора, вместо полноценного обращения к содержимому в памяти. Для целочисленных static const полей это будет означать, что они будут являться integral constant expressions - ради этого для них и было сделано такое исключение в С++98.Если же вы будете указывать инициализатор в определении static поля где-то глубоко в дебрях некоей единицы трансляции, то нигде за пределами этой единицы трансляции это значение на этапе компиляции известно не будет никому.2. Для многих использований константных значений на стадии компиляции определение вообще не требуется. То есть выделения памяти вообще не требуется. Достаточно лишь объявления с инициализатором. А компилятор просто подставит везде где нужно правильное значение. 3. Расположение определения объекта со статическим классом памяти влияет на момент его инициализации в общем порядке инициализации. Вполне может быть, что вам в вашем случае это важно. Значит придется делать отдельное определение и указывать инициализатор именно там.
0
|
||
|
|
|||||||||||||||
| 08.05.2021, 10:34 | |||||||||||||||
|
ааааа если вы про ноль как про чёткое математическое явление... да но наверно не нулю.. ноль я на человеческом языке имел ввиду нет полезного результата который можно использовать"Значение по умолчанию для этого типа задается конструктором по умолчанию." ато есть оно вот прямо с нуля создается.. тогда точно не нужно мне , спасибо. блин сколько тонкостей у каждой запятой, кавычки...
а такой еще вопрос , ни как не могу понять можем мы объъявлять ниже следующие функции как const
0
|
|||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||
| 08.05.2021, 10:37 | ||||||||||
|
Кликните здесь для просмотра всего текста
Добавлено через 1 минуту buffer_count - можем.flush - не можем (она изменяет состояние класса потому что).
0
|
||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
||
| 08.05.2021, 17:39 | ||
|
Нет, мы не "начинаем инициализацию методов (?),переменных" сразу за классом. Описание класса располагается в заголовочном файле, а определения методов и статических переменных располагается в файле реализации, т.е. совсем в другом файле.
0
|
||
|
|
||||||||
| 10.05.2021, 11:17 | ||||||||
|
Кликните здесь для просмотра всего текста
TheCalligrapher, я имел ввиду при написании без заголовочного файла
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||
| 10.05.2021, 12:51 | ||||||
Я вам их иллюстрирую.У слова "доступ" вполне четкое значение в рамках С++. Я вам выше специально дал ссылку. Изучайте. Еще у меня сложилось впечатление, что вы постоянно путаете тип(класс) и объект. Когда читаете мои посты, у вас смешивается все в кучу и вы в итоге не понимаете о чем идет речь. Давайте вы сейчас акцентируете на этом внимание и прям перечитаете всю тему сначала. А то без этого похоже разговор продолжать нет смысла, ибо воду в ступе толчем.
1
|
||||||
|
|
|||
| 11.05.2021, 12:17 | |||
нет я понимаю что такое объект. я веду к тому что в основном мы как работаем с классом. делаем объект-экземпляр и работаем. то что вы внутри создали новый-другой объект это ни что иное как временный объект. ведь мы не можем внутри статика создать такойже объект как в main ? я говорю создать а не передать как аргумент. так вот вроде не можем насколько я знаю. и получается что в моих простых задачах такие витиеватые алгоритмы через создание временных объектов избыточны. тем более что результатом от этого временного объекта нельзя воспользоваться в основном объекте. я вообще даже пока и представить не могу что за задача должна быть чтобы нам нужно изменять какието члены только через временный объект внутри статика! понятно что в больших и сложных задачах возможно там сплошь и рядом используются такие методы но мне пока оно как собаке пятая нога.зачем нам проводить реализацию например статичной переменной i в другом файле. что нам мешает сразу в заголовочном её определить внутри описания (как я показывал выше)? почему лвиное большинство предпочитает это делать не в заголовочном , просто потумочто так красиво ? или все просто повторяют как делают большинство ? или другие причины?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 11.05.2021, 12:49 | |
|
0
|
|
|
|
|||
| 12.05.2021, 09:01 | |||
|
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 12.05.2021, 09:18 | |||||||
|
В вашем посте #54 у вас ДВА разных объекта, и по барабану где они находятся, суть от этого не изменится. Если у вас два разных объекта, то один объект изменения другого никак не увидит, хоть "в статике", хоть "не в статике". Если вам нужно, чтобы объект был создан в static-функции, а продолжил меняться в main, то и делайте это. Например:
Грубо говоря, я вам объяснял характеристики гвоздей, а вы спрашиваете про то как покрыть крышу.
0
|
|||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
|||
| 12.05.2021, 09:43 | |||
|
Язык С++ мешает. В языке С++ (до появления inline переменных) вообще не существует способа определить статический член класса "внутри описания". Это невозможно в принципе. Поэтому о каком "как я показывал выше" вы ведете речь мне не ясно. Ничего вы "выше" показывать не могли.
0
|
|||
| 12.05.2021, 09:43 | |
|
Сокет принял данных больше, чем размер буфера Сокет принял данных больше, чем размер буфера
Чем больше размер буфера, тем быстрее программа обрабатывает файл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|