|
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
|
||||||
Что будет если добавить элемент в кольцевой буфер n+1 больший, чем размер буфера?27.05.2020, 05:47. Показов 8739. Ответов 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
|
||||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
||
| 06.05.2021, 22:24 | ||
|
Объект вообще не нужен для понимания концепции static. Отталкиваться нужно от типа (в 4й раз уже говорю). Думайте. Вот подставили вы аргументы в свой шаблон - это привело к генерации нового типа. И мгновенно с этим возникла новая static-переменная. Всё, не нужны никакие объекты. Их может вообще не быть. Вы не понимаете что такое шаблон, или что? Не ясно в чем у вас затруднение. Вроде простые слова говорю. Никакой витиеватости нет. Добавлено через 2 минуты
0
|
||
|
129 / 81 / 49
Регистрация: 10.01.2020
Сообщений: 293
|
|
| 06.05.2021, 22:26 | |
|
неплохо
0
|
|
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
||
| 06.05.2021, 22:27 | ||
|
А на самом деле ее нет. Ringbuffer<int, 16> и Ringbuffer<int, 32> - это два разных типа. И static-переменные у них будут разные. Все объекты каждого из этих типов получат свою общую static-переменную.Все-таки вы определенно не понимаете что такое шаблон и видимо считаете параметры в угловых скобках каким-то видом инициализации данных в классе.
1
|
||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,348
|
||
| 06.05.2021, 22:27 | ||
|
А как заходит речь о статических членах шаблонного класса, то набор синтаксисов становится еще шире.
0
|
||
|
|
|||
| 07.05.2021, 11:13 | |||
пока шаблон (или как вы говорите тип) один то все копии класса (ну объекты) будут использовать один(и общий) статик член..i=10 значит можем писать как нам больше нравиться ? или есть случаи когда один из вариантов нельзя использовать?а строчки 65 и 119 объясните пожалуйста ?
0
|
|||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|||
| 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
|
|
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|||||||||
| 07.05.2021, 19:06 | |||||||||
![]() Я же писал выше: USART() приведет к созданию объекта типа USART со значением по умолчанию. Значение по умолчанию для этого типа задается конструктором по умолчанию. В том коде он реализован с помощью метода begin(). Вот и смотрите что делает begin(), чтобы понять что происходит во время USART().На самом деле было бы нагляднее, если бы метод buffer_write был приватным. Это показало бы и возможности доступа и большую целесообразность статической функции в том коде.Кликните здесь для просмотра всего текста
https://rextester.com/YJBCFR93884
0
|
|||||||||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,348
|
||
| 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
|
|||||||||||||||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
||||||||||
| 08.05.2021, 10:37 | ||||||||||
|
Кликните здесь для просмотра всего текста
Добавлено через 1 минуту buffer_count - можем.flush - не можем (она изменяет состояние класса потому что).
0
|
||||||||||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,348
|
||
| 08.05.2021, 17:39 | ||
|
Нет, мы не "начинаем инициализацию методов (?),переменных" сразу за классом. Описание класса располагается в заголовочном файле, а определения методов и статических переменных располагается в файле реализации, т.е. совсем в другом файле.
0
|
||
|
|
||||||||
| 10.05.2021, 11:17 | ||||||||
|
Кликните здесь для просмотра всего текста
TheCalligrapher, я имел ввиду при написании без заголовочного файла
0
|
||||||||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
||||||
| 10.05.2021, 12:51 | ||||||
Я вам их иллюстрирую.У слова "доступ" вполне четкое значение в рамках С++. Я вам выше специально дал ссылку. Изучайте. Еще у меня сложилось впечатление, что вы постоянно путаете тип(класс) и объект. Когда читаете мои посты, у вас смешивается все в кучу и вы в итоге не понимаете о чем идет речь. Давайте вы сейчас акцентируете на этом внимание и прям перечитаете всю тему сначала. А то без этого похоже разговор продолжать нет смысла, ибо воду в ступе толчем.
1
|
||||||
|
|
|||
| 11.05.2021, 12:17 | |||
нет я понимаю что такое объект. я веду к тому что в основном мы как работаем с классом. делаем объект-экземпляр и работаем. то что вы внутри создали новый-другой объект это ни что иное как временный объект. ведь мы не можем внутри статика создать такойже объект как в main ? я говорю создать а не передать как аргумент. так вот вроде не можем насколько я знаю. и получается что в моих простых задачах такие витиеватые алгоритмы через создание временных объектов избыточны. тем более что результатом от этого временного объекта нельзя воспользоваться в основном объекте. я вообще даже пока и представить не могу что за задача должна быть чтобы нам нужно изменять какието члены только через временный объект внутри статика! понятно что в больших и сложных задачах возможно там сплошь и рядом используются такие методы но мне пока оно как собаке пятая нога.зачем нам проводить реализацию например статичной переменной i в другом файле. что нам мешает сразу в заголовочном её определить внутри описания (как я показывал выше)? почему лвиное большинство предпочитает это делать не в заголовочном , просто потумочто так красиво ? или все просто повторяют как делают большинство ? или другие причины?
0
|
|||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|
| 11.05.2021, 12:49 | |
|
0
|
|
|
|
|||
| 12.05.2021, 09:01 | |||
|
0
|
|||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|||||||
| 12.05.2021, 09:18 | |||||||
|
В вашем посте #54 у вас ДВА разных объекта, и по барабану где они находятся, суть от этого не изменится. Если у вас два разных объекта, то один объект изменения другого никак не увидит, хоть "в статике", хоть "не в статике". Если вам нужно, чтобы объект был создан в static-функции, а продолжил меняться в main, то и делайте это. Например:
Грубо говоря, я вам объяснял характеристики гвоздей, а вы спрашиваете про то как покрыть крышу.
0
|
|||||||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,348
|
|||
| 12.05.2021, 09:43 | |||
|
Язык С++ мешает. В языке С++ (до появления inline переменных) вообще не существует способа определить статический член класса "внутри описания". Это невозможно в принципе. Поэтому о каком "как я показывал выше" вы ведете речь мне не ясно. Ничего вы "выше" показывать не могли.
0
|
|||
| 12.05.2021, 09:43 | |
|
Сокет принял данных больше, чем размер буфера Сокет принял данных больше, чем размер буфера
Чем больше размер буфера, тем быстрее программа обрабатывает файл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|