สุดยอด C++ สมัยใหม่
คอลเลกชันของทรัพยากรบน C++ สมัยใหม่
เป้าหมายคือการรวบรวมรายการทรัพยากรเพื่อช่วยให้ผู้คนเรียนรู้และใช้ประโยชน์จาก C++ 11 สมัยใหม่และอื่นๆ อีกมากมาย
มีส่วนร่วม
หากต้องการเพิ่ม ลบ หรือเปลี่ยนแปลงสิ่งต่าง ๆ ในรายการ: โปรดส่งคำขอดึงไปยังที่เก็บ GitHub
หนังสือ
- ทัวร์ของ C++ (Bjarne Stroustrup) [C++11/17/20]
- ภาษาการเขียนโปรแกรม C++ (Bjarne Stroustrup) [C++11]
- C ++ สมัยใหม่ที่มีประสิทธิภาพ (Scott Meyers) [C ++ 11/14]
- ภาพรวมของ New C++ (Scott Meyers) [C++11/14]
- แนวทางหลัก C++ (Bjarne Stroustrup, Herb Sutter) [C++11/14/17] - แนวทางการใช้ C++ สมัยใหม่
- C++ Concurrency in Action (Anthony Williams) [C++11/14/17] - อ้างอิงและคำแนะนำในการเขียนโค้ดแบบมัลติเธรดด้วย C++ มาตรฐาน
- C++17 - คู่มือฉบับสมบูรณ์ (Nicolai M. Josuttis) [C++17] - ให้คำแนะนำเกี่ยวกับวิธีการใช้คุณลักษณะภาษาและไลบรารีของ C++17
- CMake ระดับมืออาชีพ (Craig Scott) - คำแนะนำที่เป็นประโยชน์สำหรับการใช้ CMake เพื่อสร้างโปรเจ็กต์ C++ ของคุณ
- บทช่วยสอน C++ สมัยใหม่: C++ 11/14/17/20 On the Fly (Changkun Ou) - หนังสืออ้างว่าเป็น "On the Fly" จุดประสงค์คือการให้ข้อมูลเบื้องต้นที่ครอบคลุมเกี่ยวกับฟีเจอร์ที่เกี่ยวข้องเกี่ยวกับ C++ สมัยใหม่ (ก่อนปี 2020)
สำหรับคำแนะนำที่ครอบคลุมเกี่ยวกับหนังสือ C++ โปรดดูคู่มือและรายการหนังสือ C++ ของ Stackoverflow Definitive
ชุมชน
ค้นหาข่าวสารและการอัพเดต C ++ ล่าสุด:
- ข่าวสาร สถานะ และการสนทนาเกี่ยวกับ Standard C++
ฟังพอดแคสต์ C++ ล่าสุด:
- CppCast (YouTube, Twitter) - พอดแคสต์แรกโดยนักพัฒนา C ++ สำหรับนักพัฒนา C ++!
- Cpp.chat (YouTube, Twitter) - ความคิดเห็นเกี่ยวกับ c++ และประเด็นที่น่าสนใจสำหรับโปรแกรมเมอร์ c++
- C++ Weekly - วิดีโอเพื่อการศึกษาโดย Jason Turner
อ่านข้อเสนอมาตรฐาน C++ ล่าสุด:
- เอกสารคณะกรรมการมาตรฐาน C ++
พูดคุยทุกอย่างที่เกี่ยวข้องกับ C++:
- r/cpp - ส่วนย่อย C++
- C++ Slack - พื้นที่ทำงาน C++ Slack
- กลุ่มโทรเลข CoreHard
ถามคำถาม C ++ ของคุณ:
- r/cpp_questions - subreddit สำหรับคำถามและคำตอบ C ++
- Stackoverflow C++ / C++11 / C++14 / C++17 / C++20 - คำถาม Stackoverflow เกี่ยวกับ C++
บางทีคำถามของคุณอาจได้รับคำตอบแล้วในคำถามที่พบบ่อย:
- C ++ Super-คำถามที่พบบ่อย
- คำถามที่พบบ่อยเกี่ยวกับ C++11
ไปที่หนึ่งในการประชุม C++ มากมาย:
- รายการการประชุม C++ ที่กำลังจะมีขึ้นและที่ผ่านมา
ค้นหากลุ่มผู้ใช้ C++:
- ประชุมรายชื่อกลุ่มผู้ใช้ C++
- รายชื่อกลุ่มผู้ใช้ใน C++ Super-FAQ
- การพบปะ C/C++
- ค้นหาช่องที่ขึ้นต้นด้วย
#ug
ใน C++ Slack
พูดคุย
TODO รวบรวมรายการพูดคุยที่ดีเกี่ยวกับวิธีการลดความซับซ้อนของโค้ดโดยใช้คุณสมบัติ C ++ 11/17/20
เริ่มต้นด้วยการศึกษา SG20 และวิดีโอแนะนำสำหรับการสอน C++
- CppCon Talks - การพูดคุยจากการประชุม C++
- CppCon 2014: Bjarne Stroustrup "ทำให้งานง่ายๆ เป็นเรื่องง่าย!"
- CppCon 2014: Herb Sutter "การเขียนโปรแกรมแบบไม่ต้องล็อค (หรือการเล่นกลใบมีดโกน) ตอนที่ 1"
- CppCon 2014: Herb Sutter "การเขียนโปรแกรมแบบไม่ต้องล็อค (หรือการเล่นใบมีดโกน) ตอนที่ II"
- CppCon 2014: Scott Meyers "การหักประเภทและทำไมคุณถึงสนใจ"
- CppCon 2015: Bjarne Stroustrup "การเขียน C++14 ที่ดี"
- CppCon 2015: Herb Sutter "การเขียน C++14 ที่ดี... โดยค่าเริ่มต้น"
- CppCon 2016: Chandler Carruth "ขยะเข้า ขยะออก: การโต้เถียงเกี่ยวกับพฤติกรรมที่ไม่ได้กำหนดไว้..."
- CppCon 2016: Herb Sutter "อิสรภาพการรั่วไหลใน C ++ ... โดยค่าเริ่มต้น"
- CppCon 2017: เจสัน เทิร์นเนอร์ "Practical C++17"
- CppCon 2018: Jonathan Boccara “105 อัลกอริทึม STL ในเวลาน้อยกว่าหนึ่งชั่วโมง”
- code::dive conference 2014 - Scott Meyers: แคช Cpu และทำไมคุณถึงสนใจ (สไลด์)
- code::dive conference 2015 - Andrei Alexandrescu - การเขียน Fast Code I (สไลด์)
- code::dive conference 2015 - Andrei Alexandrescu - การเขียน Fast Code II (สไลด์)
- C++Now Talks - การพูดคุยจากการประชุม C++Now
- Going Native 2012: เทมเพลต Variadic คือ Funadic
- Going Native 2013: Stephan T Lavavej - "อย่าช่วยคอมไพเลอร์"
- Going Native 2013: Sean Parent - "C++ Seasoning"
บล็อก
- บล็อก C++ ของ Andrzej - แนวทางและความคิดเกี่ยวกับ C++
- บล็อกของแอนโทนี่ วิลเลียมส์
- Embedded in Academia - John Regehr ศาสตราจารย์สาขาวิทยาการคอมพิวเตอร์ University of Utah สหรัฐอเมริกา
- เอริก นีบเลอร์
- Fluent C++ - โค้ดที่แสดงออกในภาษา C++
- Guru of the Week (โพสต์ใหม่) - ชุดปัญหาการเขียนโปรแกรม C++ ที่สร้างและเขียนโดย Herb Sutter
- Guru of the Week (โพสต์เก่า) - โพสต์ Guru of the Week ที่เก่ากว่า
- Musings C++ ของ Marshall
- บล็อกของ Paul Fultz II
- กำลังนำเสนอการเขียนโปรแกรม
- ลดความซับซ้อนของ C++ - เขียน C++ ที่สะอาดและบำรุงรักษาได้
- Sticky Bits - บล็อกเกี่ยวกับการพัฒนาซอฟต์แวร์สำหรับระบบเรียลไทม์และระบบฝังตัว
- Sutter's Mill - Herb Sutter เกี่ยวกับการพัฒนาซอฟต์แวร์
- มุมมองจากกิจกรรมและความสนใจทางวิชาชีพของ Aristeia -Scott Meyers
- บล็อกของทีม Visual C++
- ทำไมอีกาถึงเหมือนโต๊ะเขียนหนังสือ?
เว็บไซต์
- แนวทางปฏิบัติที่ดีที่สุดของ C++ - การรวบรวมแนวทางปฏิบัติที่ดีที่สุดของ C++ ร่วมกัน
- รูปแบบ C++ - พื้นที่เก็บข้อมูลรูปแบบ C++ สมัยใหม่
- การอ้างอิง C++ - การอ้างอิง C++
- C++ By Example - เรียนรู้ C++ ตามตัวอย่าง!
เทมเพลตการเริ่มต้นโครงการ
- ModernCppStarter - เทมเพลตสำหรับการเริ่มต้นโปรเจ็กต์ C++ สมัยใหม่โดยใช้ CMake, CI, การครอบคลุมโค้ด, รูปแบบเสียงดังกราว, การจัดการการพึ่งพาที่ทำซ้ำได้ และอื่นๆ
- modern-cpp-template - เทมเพลตสำหรับโปรเจ็กต์ C++ สมัยใหม่ที่ใช้ CMake, Clang-Format, CI, การทดสอบหน่วย และอื่นๆ อีกมากมาย พร้อมรองรับการรวมดาวน์สตรีม
- cmake_template - เทมเพลตโปรเจ็กต์ CMake เพื่อให้คุณเริ่มต้นใช้งาน C++ และเครื่องมือได้
- Pitchfork - Pitchfork คือชุดของข้อตกลงโครงการ C ++
ห้องสมุด
นี่ไม่ควรเป็นรายการที่ครอบคลุมของไลบรารี C และ C++ ทั้งหมด เป็นรายชื่อไลบรารีสมัยใหม่คุณภาพสูงพร้อมการใช้งานทั่วไป (การทำให้เป็นอนุกรม ฐานข้อมูล การทดสอบ ฯลฯ) หรือไลบรารีคุณภาพสูงพร้อมการใช้งานฟีเจอร์ใหม่ของ C++
อ่างล้างจาน / กรอบ
- abseil - Abseil คือคอลเลกชันโอเพ่นซอร์สของโค้ด C++ (สอดคล้องกับ C++11) ที่ออกแบบมาเพื่อเพิ่มไลบรารีมาตรฐาน C++
- Boost - การรวบรวมไลบรารี C ++
- Folly - ไลบรารีโอเพ่นซอร์สของ Facebook
- POCO - ไลบรารี POCO C++ เป็นไลบรารี C++ ข้ามแพลตฟอร์มที่ทรงพลังสำหรับการสร้างแอปพลิเคชันบนเครือข่ายและอินเทอร์เน็ตที่ทำงานบนเดสก์ท็อป เซิร์ฟเวอร์ อุปกรณ์พกพา IoT และระบบฝังตัว
- nonstd-lite - พาเรนต์ของที่เก็บ *-lite ซึ่งเป็นเส้นทางการโยกย้ายไปยังฟีเจอร์หลัง C++ 11 สำหรับสภาพแวดล้อมก่อน C++ 11
- xtd - เฟรมเวิร์ก C++ 17/20 สมัยใหม่เพื่อสร้างคอนโซล (CLI), แบบฟอร์ม (GUI เช่น WinForms) และแอปพลิเคชัน tunit (การทดสอบหน่วยเช่น Microsoft Unit Testing Framework) บน Windows, macOS, Linux, iOS และ Android
การทดสอบ
- การทดสอบการอนุมัติสำหรับ C++ - การทดสอบการอนุมัติดั้งเดิมสำหรับ C++ บน Linux, Mac และ Windows
- การตรวจสอบอัตโนมัติ - QuickCheck และ SmallCheck โคลนสำหรับ C ++
- Bandit - เฟรมเวิร์กส่วนหัวเท่านั้นสำหรับ C++11 ที่ต้องการให้การทำงานกับการทดสอบหน่วยเป็นประสบการณ์ที่น่าพึงพอใจ
- Boost:UT - C++20 μ(micro)/Unit Testing framework, ส่วนหัวเดียว โดยไม่จำเป็นต้องใช้มาโคร
- Boost.Test - เพิ่มกรอบการทดสอบ
- Catch - เฟรมเวิร์กที่ทันสมัย เป็นภาษา C++ ส่วนหัวเท่านั้น สำหรับการทดสอบหน่วย TDD และ BDD
- clean-test - กรอบการทดสอบ C++-20 ที่ทันสมัย
- doctest - เฟรมเวิร์กการทดสอบส่วนหัวเดียว C++11/14/17/20 ที่มีฟีเจอร์หลากหลายเร็วที่สุดสำหรับการทดสอบหน่วยและ TDD
- Fakeit - การเยาะเย้ย C ++ ทำได้ง่าย ไลบรารีส่วนหัวที่เรียบง่ายแต่สื่ออารมณ์ได้มากสำหรับการเยาะเย้ย c++
- Googletest - กรอบการทดสอบและการเยาะเย้ยของ Google
- Mull - เครื่องมือทดสอบการกลายพันธุ์ที่ใช้งานได้จริงสำหรับ C และ C++
- Rapidcheck - โคลน QuickCheck สำหรับ C ++
- snitch - เฟรมเวิร์กการทดสอบ Lightweight C++20
การเปรียบเทียบ
ไลบรารีและเฟรมเวิร์กสำหรับการสร้างมาตรฐานย่อย
- Celero - ไลบรารี/เฟรมเวิร์กการเขียนเกณฑ์มาตรฐาน C ++
- เกณฑ์มาตรฐานของ Google ? - ห้องสมุดสนับสนุน microbenchmark
- hayai - เฟรมเวิร์กการเปรียบเทียบ C ++
- Nonius - เฟรมเวิร์กการวัดประสิทธิภาพระดับไมโคร C++ ไลบรารี/เฟรมเวิร์กการเขียนเกณฑ์มาตรฐาน C++
- nanobench - ฟังก์ชัน microbenchmarking แบบหัวเดียวที่ง่าย รวดเร็ว และแม่นยำสำหรับ C++11/14/17/20
การบันทึก
- fmtlog - ไลบรารีการบันทึกสไตล์ fmtlib พร้อมเวลาแฝงในหน่วยนาโนวินาที
- spdlog - ไลบรารีการบันทึก C ++ ที่รวดเร็ว
- loguru - ไลบรารีการบันทึก C++ ที่มีน้ำหนักเบาและยืดหยุ่น
การทำเกลียว
- concurrentqueue - คิวพร้อมกันที่รวดเร็วสำหรับผู้ผลิตหลายรายและผู้บริโภคหลายรายสำหรับ C ++ 11
- Cpp-Taskflow - ไลบรารีการเขียนโปรแกรมงานแบบขนาน C ++ ที่ทันสมัย
- ทางแยก - โครงสร้างข้อมูลพร้อมกันใน C ++
- MPMCQueue - คิวที่ไม่มีการล็อคสำหรับผู้บริโภคหลายรายที่มีขอบเขตซึ่งเขียนด้วย C ++ 11
- SPSCQueue - คิวที่ไม่ต้องรอและไม่มีการล็อคสำหรับผู้บริโภครายเดียวที่มีขอบเขตซึ่งเขียนด้วย C ++ 11
- Threading Building Blocks - Threading Building Blocks (TBB) เป็นไลบรารีเทมเพลต C++ ที่พัฒนาโดย Intel สำหรับการเขียนโปรแกรมแบบขนานบนโปรเซสเซอร์แบบมัลติคอร์ เมื่อใช้ TBB การคำนวณจะแบ่งออกเป็นงานที่สามารถทำงานแบบขนานได้ ไลบรารีจัดการและกำหนดเวลาเธรดเพื่อดำเนินงานเหล่านี้
- execq - คิวอัจฉริยะที่รันงานในลักษณะเหมือนเธรดพูล (อนุกรม / พร้อมกัน) ใน C ++ 11
- concurrencpp - ไลบรารีการทำงานพร้อมกันทั่วไปที่มีงาน ผู้ดำเนินการ ตัวจับเวลา และ C++20 coroutines เพื่อควบคุมงานทั้งหมด
การแยกวิเคราะห์และการทำให้เป็นอนุกรม
- เจสัน? - JSON สำหรับ C++ สมัยใหม่
- jsoncpp - ไลบรารี C++ สำหรับการโต้ตอบกับ JSON
- toml++ - ไลบรารี C++17 เฉพาะส่วนหัวสำหรับการแยกวิเคราะห์ TOML v0.5.0 และใหม่กว่า
- Tinytoml - ส่วนหัวเฉพาะไลบรารี C ++ 11 สำหรับการแยกวิเคราะห์ TOML
- yaml-cpp - ตัวแยกวิเคราะห์และตัวปล่อย YAML ใน C ++
- cpptoml - ไลบรารีส่วนหัวเท่านั้นสำหรับแยกวิเคราะห์ไฟล์การกำหนดค่า TOML
- ซีเรียล - ไลบรารี C ++ 11 สำหรับการทำให้เป็นอนุกรม
- cista - ไลบรารี C ++ 17 สำหรับการทำให้เป็นอนุกรมไบนารี่แบบศูนย์คัดลอกประสิทธิภาพสูง
- simdjson - เร่งการแยกวิเคราะห์ JSON ต่อ se โดยใช้คำสั่ง SIMD ที่มีอยู่ทั่วไป
- Boost.JSON - ไลบรารี JSON ที่รองรับตัวจัดสรรแบบกำหนดเองอย่างมีประสิทธิภาพ
- hjson-cpp - ไลบรารี C++11 สำหรับการอ่านและเขียนไฟล์ Hjson และ/หรือ JSON
- json_struct - ตัวแยกวิเคราะห์ JSON ส่วนหัวเดียวประสิทธิภาพสูง แยกวิเคราะห์โดยตรงจากและจากโครงสร้าง C++
- daw_json_link - การทำให้เป็นอนุกรม JSON ที่รวดเร็วและสะดวกและการแยกวิเคราะห์ใน C ++
การจัดรูปแบบสตริงและเทมเพลต
- {fmt} - ไลบรารีการจัดรูปแบบขนาดเล็ก ปลอดภัย และรวดเร็ว
- Inja - เอ็นจิ้นเทมเพลตสำหรับ Modern C ++
- หนวด - เทมเพลตข้อความหนวดใน C ++ 11
- Tinyformat.h - ไลบรารีการแทนที่ printf แบบปลอดภัยน้อยที่สุดสำหรับ C ++
- pprint - เครื่องพิมพ์สวยสำหรับ Modern C++
การเขียนสคริปต์
- sol2 - ไลบรารี C++ เชื่อมโยงกับ Lua
- ChaiScript - ภาษาสคริปต์แบบฝังที่ใช้งานง่ายสำหรับ C ++
- pybind11 - การทำงานที่ราบรื่นระหว่าง C ++ 11 และ Python
เว็บ/HTTP
- Beast - HTTP และ WebSocket สร้างขึ้นบน Boost.Asio ใน C++11
- cpprestsdk - C++ REST SDK เป็นโครงการ Microsoft สำหรับการสื่อสารไคลเอนต์-เซิร์ฟเวอร์บนคลาวด์ในโค้ดเนทีฟโดยใช้การออกแบบ C++ API แบบอะซิงโครนัสสมัยใหม่ โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อช่วยให้นักพัฒนา C++ เชื่อมต่อและโต้ตอบกับบริการต่างๆ
- cpr - คำขอ C ++: Curl for People ซึ่งเป็นพอร์ตทางจิตวิญญาณของคำขอ Python
- Crow - ไมโครเฟรมเวิร์กที่ง่ายและรวดเร็วสำหรับการสร้างเว็บเซิร์ฟเวอร์ (ได้รับแรงบันดาลใจจาก Python Flask)
- dmbcs-micro-server - JSON, HTML, ข้อความและ PNG ที่ใช้ C ++ 20 ผ่าน HTTP; วิธีง่ายๆ ในการฝังเซิร์ฟเวอร์ลงในแอปพลิเคชันของคุณเพื่อจัดเตรียม UI บนเว็บ
- Drogon - เฟรมเวิร์กแอปพลิเคชัน HTTP ประสิทธิภาพสูงที่ใช้ C++14/17
- oat++ - กรอบงานเว็บประสิทธิภาพสูง (C++11, การพึ่งพาเป็นศูนย์)
- pistache - เฟรมเวิร์ก C ++ REST อันหรูหรา
- restbed - เฟรมเวิร์ก Restbed นำฟังก์ชัน RESTful แบบอะซิงโครนัสมาสู่แอปพลิเคชัน C ++ 11
ฐานข้อมูล
- mongo-cxx-driver - ไดรเวอร์ C ++ สำหรับ MongoDB
- รีดอกซ์ - ไคลเอนต์ C++11 ที่รวดเร็ว ทันสมัย อะซิงโครนัส และชั่วร้ายสำหรับ Redis
- sqlite_orm - ส่วนหัวที่ทรงพลังเฉพาะไลบรารี SQLite3 ORM สำหรับ C ++ 14
- sqlite3pp - ตัวห่อหุ้ม C ++ ของ SQLite3 API
- sqlpp11 - ไลบรารีเทมเพลต SQL ประเภทที่ปลอดภัยสำหรับ C ++
- libpqxx - API ไคลเอนต์ C++ อย่างเป็นทางการสำหรับ PostgreSQL
- TinyORM - ไลบรารี C++ ORM ที่ทันสมัย
ไบโอซี++
- SeqAn - ไลบรารี C++ ที่ทันสมัยสำหรับการวิเคราะห์ลำดับ (C++17, C++20)
เบ็ดเตล็ด
- ASAP - ไลบรารีเฉพาะส่วนหัวเพื่อแยกวิเคราะห์ แสดง ดำเนินการ และวนซ้ำวันที่
- BigIntegerCPP - ไลบรารีจำนวนเต็มขนาดใหญ่ C++11 ที่มีประสิทธิภาพสูง มีลักษณะเรียบง่าย และยังสะอาดตาอีกด้วย
- CAF - การใช้งานโอเพ่นซอร์สของโมเดลนักแสดงใน C ++
- Cinder - Cinder เป็นไลบรารีโอเพ่นซอร์สฟรีสำหรับการเขียนโค้ดโฆษณาคุณภาพระดับมืออาชีพในภาษา C++
- ท่อร้อยสาย - สตรีมประสิทธิภาพสูงตาม Coroutine TS
- cppitertools - การใช้งาน itertools (python) สำหรับ C ++ 14
- cxxopts - ตัวแยกวิเคราะห์ตัวเลือกบรรทัดคำสั่ง C ++ น้ำหนักเบา
- date - ไลบรารีวันที่และเวลาตามส่วนหัว C ++ 11/14/17
- docopt.cpp - docopt สร้างอินเทอร์เฟซบรรทัดคำสั่งที่สวยงาม
- EnTT - ระบบเอนทิตีส่วนประกอบ (ECS) แบบส่วนหัวเท่านั้น รวดเร็วและเชื่อถือได้สำหรับ C++ สมัยใหม่
- Font Chef - ไลบรารี C99 และ C++14 สำหรับปรุงแบบอักษรและแสดงข้อความ
- HashLibPlus - ไลบรารี C++11 ที่ให้อินเทอร์เฟซที่ใช้งานง่ายสำหรับการคำนวณแฮชและเช็คซัมของสตริง ไฟล์ สตรีม Bytearrays และข้อมูลที่ไม่ได้พิมพ์ และอีกมากมาย นอกจากนี้ยังรองรับการแฮชแบบเพิ่มหน่วยอีกด้วย
- IntX - พอร์ต C ++ 11 ของไลบรารี IntX ที่มีความแม่นยำตามอำเภอใจด้วยความเร็วประมาณการใช้อัลกอริธึมการคูณ / การหาร O (N * log N)
- iod - ยูทิลิตี้การเขียนโปรแกรม Meta สำหรับ C ++ 14
- Magic Enum - การสะท้อนแบบคงที่สำหรับ enum (ถึงสตริง จากสตริง การวนซ้ำ) สำหรับ C++ สมัยใหม่ ทำงานกับ enum ประเภทใดก็ได้โดยไม่ต้องใช้มาโครหรือโค้ดสำเร็จรูป
- Wise Enum - การสะท้อนแบบคงที่สำหรับ enums ที่คล้ายกับ Magic Enum แต่ใช้ได้กับ C++ 11/14/17
- Nameof - ไลบรารี C++17 แบบส่วนหัวเท่านั้นจัดเตรียมชื่อของแมโครและฟังก์ชันเพื่อรับชื่ออย่างง่ายของตัวแปร ชนิด ฟังก์ชัน แมโคร และแจงนับ
- PEGTL - ไลบรารีเทมเพลตไวยากรณ์นิพจน์การแยกวิเคราะห์ (C ++ 11 ส่วนหัวเท่านั้น)
- Random - ส่วนหัวที่ง่าย สะดวก สุ่มเฉพาะสำหรับ C++ สมัยใหม่
- rang - ไลบรารี C++11 ที่เรียบง่าย ทันสมัย และส่วนหัวเท่านั้นสำหรับสีในเทอร์มินัลของคุณ
- range-v3 - ไลบรารีช่วงทดลองสำหรับ C ++ 11/14/17
- SimpleBaseLib4CPP - ไลบรารีการเข้ารหัสฐาน C++11 อย่างง่ายที่ให้การสนับสนุนการเข้ารหัสและถอดรหัสฐานต่างๆ ในขณะนี้ เช่น Base16, Base32 (ตัวแปรต่างๆ), Base58 (ตัวแปรต่างๆ), Base64 (ตัวแปรต่างๆ) [เอ็มไอที]
- simple_match - การจับคู่รูปแบบส่วนหัวอย่างง่ายสำหรับ c ++ 14
- SRL-CPP - ไลบรารีตัวสร้างภาษา Regex อย่างง่ายที่เขียนด้วย C ++ 11 ซึ่งมีอินเทอร์เฟซที่ใช้งานง่ายสำหรับการสร้างนิพจน์ regex ทั้งแบบง่ายและซับซ้อน [เอ็มไอที]
- tweeny - ไลบรารีการแก้ไขส่วนหัวเท่านั้นพร้อมฟังก์ชันการค่อยๆ เปลี่ยนมากกว่า 30 รายการ
- Vireo - ไลบรารีการประมวลผลวิดีโอน้ำหนักเบาและอเนกประสงค์โดย Twitter
- ตัวบ่งชี้ - ตัวบ่งชี้กิจกรรมสำหรับ Modern C ++
- AssociatedEnum - ไลบรารีส่วนหัวเท่านั้นสำหรับ C++ สำหรับการแจงนับที่มีค่าที่เกี่ยวข้อง
- openFrameworks - ชุดเครื่องมือ C++ โอเพ่นซอร์สสำหรับการเขียนโค้ดเชิงสร้างสรรค์
- tabulate - Table Maker สำหรับ Modern C++
เครื่องมือ
เบ็ดเตล็ด
- เสียงดังกราวรูปแบบ ? - เครื่องมือในการจัดรูปแบบโค้ด C++
- clangd - เข้าใจโค้ด C++ ของคุณและเพิ่มฟีเจอร์อันชาญฉลาดให้กับโปรแกรมแก้ไขของคุณ: การเติมโค้ดให้สมบูรณ์ ข้อผิดพลาดในการคอมไพล์ ไปสู่คำจำกัดความ และอื่นๆ
- Compiler Explorer - สำรวจเอาต์พุตแอสเซมบลีของโค้ด C++ ของคุณแบบโต้ตอบ
- cquery - เซิร์ฟเวอร์ภาษา C/C++ รองรับฐานโค้ดหลายล้านบรรทัด ขับเคลื่อนโดย libclang Emacs, Vim, VSCode และอื่นๆ ที่รองรับโปรโตคอลเซิร์ฟเวอร์ภาษา การอ้างอิงโยง ความสมบูรณ์ การวินิจฉัย การเน้นความหมาย และอื่นๆ (ไม่มีการคอมมิตอีกต่อไปตั้งแต่ 27 พ.ย. 2018)
- ccls - เซิร์ฟเวอร์ภาษา C/C++/ObjC รองรับการอ้างอิงโยง ลำดับชั้น ความสมบูรณ์ และการเน้นความหมาย แยกจาก cquery ซึ่งอยู่ระหว่างการพัฒนาที่ใช้งานอยู่
- irony-mode - โหมดรอง AC/C++ สำหรับ Emacs ที่ขับเคลื่อนโดย libclang
- modern-cpp-font-lock-mode - ไวยากรณ์ที่เน้นการสนับสนุน Modern C ++ ด้วย emacs
การวิเคราะห์แบบไดนามิก
- น้ำยาฆ่าเชื้อ ? - โครงการนี้เป็นศูนย์รวมของน้ำยาฆ่าเชื้อ: AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer และอีกมากมาย
- Valgrind - เป็นเฟรมเวิร์กเครื่องมือสำหรับการสร้างเครื่องมือวิเคราะห์แบบไดนามิก มีเครื่องมือ Valgrind ที่สามารถตรวจจับการจัดการหน่วยความจำและข้อบกพร่องของเธรดได้โดยอัตโนมัติ และโปรไฟล์โปรแกรมของคุณโดยละเอียด คุณยังสามารถใช้ Valgrind เพื่อสร้างเครื่องมือใหม่ได้
การวิเคราะห์แบบคงที่
- cppcheck - เป็นเครื่องมือวิเคราะห์แบบคงที่สำหรับโค้ด C/C++ โดยให้การวิเคราะห์โค้ดที่ไม่ซ้ำใครเพื่อตรวจจับจุดบกพร่องและมุ่งเน้นไปที่การตรวจจับพฤติกรรมที่ไม่ได้กำหนดและโครงสร้างการเข้ารหัสที่เป็นอันตราย
- เสียงดังกราวเรียบร้อย ? - เป็นเครื่องมือ “linter” ที่ใช้ภาษา C++ แบบเสียงดังกราว จุดประสงค์คือเพื่อให้มีกรอบการทำงานที่ขยายได้สำหรับการวินิจฉัยและแก้ไขข้อผิดพลาดในการเขียนโปรแกรมทั่วไป เช่น การละเมิดสไตล์ การใช้อินเทอร์เฟซในทางที่ผิด หรือข้อบกพร่องที่สามารถอนุมานได้ผ่านการวิเคราะห์แบบคงที่ clang-tidy เป็นแบบโมดูลาร์และมีอินเทอร์เฟซที่สะดวกสำหรับการเขียนเช็คใหม่
- clang-analyzer - เป็นเครื่องมือวิเคราะห์ซอร์สโค้ดที่พบข้อบกพร่องในโปรแกรม C, C++ และ Objective-C ใช้การวิเคราะห์ระหว่างขั้นตอนที่ละเอียดอ่อนต่อเส้นทางโดยอาศัยเทคนิคการดำเนินการเชิงสัญลักษณ์
คลุมเครือ
- American fuzzy lop - อเมริกัน fuzzy lop เป็น fuzzer ที่เน้นความปลอดภัย
- hongfuzz - fuzzer ที่เน้นความปลอดภัย ขับเคลื่อนด้วยข้อเสนอแนะ มีวิวัฒนาการ ใช้งานง่าย พร้อมตัวเลือกการวิเคราะห์ที่น่าสนใจ
- libFuzzer - ไลบรารีสำหรับการทดสอบฟัซซี่ที่มีแนวทางครอบคลุม
สร้างระบบ
- Bazel - เป็นระบบบิลด์ที่รวดเร็ว ปรับขนาดได้ หลายภาษา และขยายได้
- build2 - เป็นชุดเครื่องมือสร้างข้ามแพลตฟอร์มสำหรับการพัฒนาและจัดทำโค้ด C และ C++
- ซีเมค ? - ตระกูลเครื่องมือข้ามแพลตฟอร์มที่ออกแบบมาเพื่อสร้าง ทดสอบ และจัดทำแพ็คเกจซอฟต์แวร์
- Meson - เป็นระบบสร้างโอเพ่นซอร์สที่ให้ทั้งความรวดเร็วอย่างยิ่ง และที่สำคัญยิ่งกว่านั้นคือเป็นมิตรต่อผู้ใช้มากที่สุดเท่าที่จะเป็นไปได้
- XMake - เป็นยูทิลิตี้การสร้างข้ามแพลตฟอร์มที่ใช้ Lua
การจัดการแพ็คเกจ
- Buckaroo - ตัวจัดการแพ็คเกจ Polyglot ที่กระจายอำนาจอย่างสมบูรณ์สำหรับ C ++ และ Friends
- cget - การดึงแพ็คเกจ CMake
- โคนัน - ตัวจัดการแพ็คเกจ C/C++
- CPM - สคริปต์ CMake สำหรับการจัดการการพึ่งพาข้ามแพลตฟอร์มโดยไม่ต้องตั้งค่า
- Hunter - ตัวจัดการแพ็คเกจข้ามแพลตฟอร์มสำหรับ C ++
- vcpkg - ตัวจัดการไลบรารี C++ สำหรับ Windows, Linux และ MacOS
- xrepo - ตัวจัดการแพ็คเกจ C/C++ ข้ามแพลตฟอร์มที่ใช้ Xmake
เกี่ยวกับ
รายการนี้รวบรวมโดย Erik Rigtorp ด้วยความช่วยเหลือจากชุมชน C++:
- rigtorp.se
- [email protected]
- github.com/rigtorp
- twitter.com/rigtorp
- linkedin.com/in/rigtorp