این پروژه با هدف بازآفرینی امکانات کتابخانه استاندارد ++C در زبان برنامهنویسی C ایجاد شده است. هدف آن ارائه ابزارها و کتابخانههای آشنا و متداول در ++C به توسعهدهندگان C است تا امکان مدیریت بهتر ساختارهای داده، پیادهسازی الگوریتمها و استفاده از ویژگیهای مختلف زبان برنامهنویسی C را داشته باشند، بدون اینکه نیاز به تغییر زبان باشد.
این پروژه از عشق و علاقه عمیقم به زبان C نشأت گرفته است. اعتقادم بر این است که C همچنان یک ابزار حیاتی برای هر مهندس کامپیوتر یا برنامهنویس است و پایهای ضروری برای ساخت نرمافزارهای کارآمد و قابل اعتماد فراهم میآورد. این پروژه با هدف غنیسازی زبان C با امکانات و راحتیهای موجود در ++C یا چه بسا هر زبان دیگری طراحی شده است.
این پروژه از یک ایده در زمان انجام یک پروژه به ذهنم رسید، شکل گرفت. در آن پروژه، به شدت به ابزارهایی که در ++C یا زبانهای برنامهنویسی سطح بالاتر وجود دارند، نیاز داشتم تا کار را راحتتر کنم. اما خب . بنابراین، تصمیم گرفتم که خودم این امکانات را در قالب زبان C ایجاد کنم.
برای دسترسی به کتابخانه C استاندارد، لطفاً به لینک زیر مراجعه کنید:
https://github.com/KaisenAmin/c_std
پروژه به چندین زیرشاخه تقسیم شده است که هر یک نمایندهای از بخشهای مختلف کتابخانه استاندارد ++C میباشد:
Array
: پیادهسازی یک آرایه پویا مشابه std::array
.ForwardList
: پیادهسازی یک لیست پیوندی تک سویه مشابه std::forward_list
.List
: پیادهسازی یک لیست پیوندی دو سویه مشابه std::list
.Queue
: پیادهسازی یک صف بر اساس std::queue
.Stack
: پیادهسازی یک پشته مشابه std::stack
.String
: پیادهسازی یک کلاس رشته ساده که std::string
را تقلید میکند.Vector
: پیادهسازی یک آرایه پویا مشابه std::vector
.PriorityQueue
: پیادهسازی یک صف اولویتدار بر اساس std::priority_queue
.Dqueue
: پیادهسازی یک دیک (صف دو سر) بر اساس std::deque
.CsvFile, CsvRow
: برای خواندن، نوشتن و عملیات مختلف روی فایلهای CSV.ConfigFile
: کتابخانه ConfigFile برای مدیریت پروندههای پیکربندی در C.Map
: این کتابخانه C پیادهسازی عمومی یک نقشه یا آرایه مرتبط را فراهم میکند.Span
: این کتابخانه C پیادهسازی عمومی کانتینر span در C++ برای کار با حافظه پیوسته را ارائه میدهد.Algorithm
: این کتابخانه C طیف گستردهای از قابلیتها را به شیوهای عمومی مانند std::algorithm در cpp ارائه میدهد.هر ماژول شامل یک فایل منبع .c
و یک فایل هدر .h
میباشد، همراه با یک فایل README.md
که اطلاعاتی در مورد نحوه استفاده از آن ماژول خاص را فراهم میکند.
برای دسترسی به کتابخانه C استاندارد، لطفاً به لینک زیر مراجعه کنید:
https://github.com/KaisenAmin/c_std
برای کامپایل هر ماژول، به پوشه مورد نظر بروید و از دستور زیر استفاده کنید:
gcc -std=c11 -O3 -march=native -flto -funroll-loops -Wall -Wextra -pedantic -s -o module_name module_name.c
برای استفاده از یک ماژول در پروژه خود، فایل هدر مربوطه را در فایلهای منبع C خود قرار دهید و آنها را با پیادهسازی ماژول کامپایل کنید.
این پروژه تحت مجوز GNU General Public License v3.0 میباشد
تاکنون کتابخانههای مختلفی را پیاده سازی کرده ام و هر روز در حال بهبود هستند. این پروژه به توسعهدهندگان C این امکان را میدهد که از ساختارهای داده پیچیده و الگوریتمهای پیشرفته بهرهمند شوند، که پیش از این تنها در زبانهای شیءگرا مانند ++C قابل دسترسی بودند. این کتابخانهها به صورت مداوم توسعه داده میشوند تا قابلیتهای بیشتر و بهتری را به زبان C اضافه کنند. و اینکه در پایان خوشحال می شود که افراد دیگری در این پروژه سهیم شوند .