Перейти к содержанию
    

Циклический буфер на С++

Кто ни будь писал функцию

циклического буфера на EС++

в иаре в виде класса?

на С у меня есть такая функция

там буфер(массив) создавался макросом.

а затем я использовал ф-ии чтения записи

Хотелось бы тоже самое на С++ но без макроса

а при вызове конструктора с параметром чтоб сразу обьявлялся массив

нужного размера.

CicleBufer(0x24);

как то это можно сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скачайте scmRTOS.

Там есть в точности то, что Вам нужно, и ещё много полезного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть старинный проект под мегу103 для UART (cм. аттач). Там использовался кольцевой буфер. Может, пригодится...

uart_cpp.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на С у меня есть такая функция

там буфер(массив) создавался макросом.

а затем я использовал ф-ии чтения записи

А можно код на С сюда? Для моего общего развития :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот код шаблона кольцевого буфера. Пользоваться, например, так:

 

ring_buffer<int, 8> IntBuf8; // буфер на 8 интов

ring_buffer<float, 11> FltBuf11; // буфер на 11 флоатов

struct TStruct {...};

ring_buffer<TStruct, 4> StructBuf4; // буфер на 4 структуры

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

struct TStruct {...};

ring_buffer<TStruct*, 4> pStructBuf4; // буфер на 4 указателя на струтуру типа TStruct

ring_buf.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...