C static library easier to use than `libc` (C standard library).
## About **libcproject** is a C static library for learning purposes. It tries to implement useful functions/data structures while being easier to use than `libc` (C standard library) as much as possible. C is a low-level programming language and we often end up reinventing the wheel as the C standard library (`libc`) is quite small and in my humble opinion, not well designed. **libcproject** solve this by providing common functions or data structures (`hash_map`, `array_list`, `linked_list`, `queue`, `stack`, etc.), we might need in our C projects. [Online documentation](https://libcproject.vercel.app/). ## Prerequisites - [GNU coreutils](https://www.gnu.org/software/coreutils/) - [GNU binutils](https://www.gnu.org/software/binutils/) - [GNU gcc](https://gcc.gnu.org/) - [GNU make](https://www.gnu.org/software/make/) - [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) - [Doxygen](https://www.doxygen.nl/) For example on GNU/Linux Ubuntu: ```sh # Install Build Tools sudo apt install build-essential gcc make clang-format # Install Documentation Tools sudo apt install doxygen doxygen-gui doxygen-doc graphviz ``` ## Usage ```sh make # to compile make run # to run main make test # to run unit tests make lint # to lint the code make documentation # to generate the documentation make clean # to clean up nm ./build/libcproject.a # to see the symbols ``` Steps to create a new C project that uses `libcproject`: ### Step 1: Create a new project ```sh mkdir my-project cd my-project ``` ### Step 2: Install and Compile `libcproject` in the project ```sh # Clone the repository git clone git@github.com:theoludwig/libcproject.git # Go to libcproject directory cd libcproject # Compile the library make ``` ### Step 3: Create a new C file ```sh cd .. touch main.c ``` ```cpp #include