# c++ 实现的fifo **Repository Path**: LCCAA/kfifo ## Basic Information - **Project Name**: c++ 实现的fifo - **Description**: 可以运行在单片机上,使用c++实现的fifo。 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-01-18 - **Last Updated**: 2024-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # c++ 实现的一个环形队列 ## 1、使用方法 ### 1、 静态内存初始化 本项目需要使用到单片机中,所以需要留有静态初始化的接口。初始化接口使用方法如下: ```c++ #include "kfifo.h" #define BUFFER_LENGTH 32 int main(int argc, char** argv) { uint8_t data[BUFFER_LENGTH] = {}; kfifo f(data, BUFFER_LENGTH); return 0; } ``` ### 2、 动态内存初始化 若单片机有使用动态内存,则可以考虑使用动态初始化。 ```c++ #include "kfifo.h" #define BUFFER_LENGTH 32 int main(int argc, char** argv) { kfifo f(BUFFER_LENGTH); return 0; } ``` *注意* :使用该接口需要重写c++的new运算符。 ### 3、 将数据块压入队列 ```c++ #include "kfifo.h" #define BUFFER_LENGTH 32 int main(int argc, char** argv) { kfifo f(BUFFER_LENGTH); f.kfifo_put((const uint8_t*)"123", 4); return 0; } ``` ### 4、 将数据块取出队列 ```c++ #include "kfifo.h" #define BUFFER_LENGTH 32 int main(int argc, char** argv) { uint8_t data[32] = {}; kfifo f(BUFFER_LENGTH); f.kfifo_put((const uint8_t*)"123", 4); f.kfifo_get(data, 32); return 0; } ``` ### 5、 获取剩余长度 ```c++ #include "kfifo.h" #define BUFFER_LENGTH 32 int main(int argc, char** argv) { size_t s = 0; kfifo f(BUFFER_LENGTH); s = f.kfifo_data_space_len(); return 0; } ``` ### 6、重置剩余长度 ```c++ #include "kfifo.h" #define BUFFER_LENGTH 32 int main(int argc, char** argv) { kfifo f(BUFFER_LENGTH); f.kfifo_reset(); return 0; } ```