3 คะแนน โดย GN⁺ 2024-10-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Modern C ฉบับ C23 สามารถดาวน์โหลดได้ฟรี โดยมีเป้าหมายหลักคืออัปเดตให้สอดคล้องกับมาตรฐาน C ใหม่อย่าง C23
  • เนื้อหาของมาตรฐานใหม่นี้มีให้ในรูปแบบที่ใกล้เคียงที่สุดผ่านเอกสารสาธารณะ และฟีเจอร์ใหม่ส่วนใหญ่ของคอมไพเลอร์หลัก ๆ ได้ถูกนำไปใช้งานแล้ว

การเปลี่ยนแปลงและสิ่งที่เพิ่มเข้ามาหลักใน C23

  • การเปลี่ยนแปลงเกี่ยวกับจำนวนเต็ม: เพิ่มชนิดข้อมูลความละเอียดระดับบิตใหม่ชื่อ _BitInt(N), มี C library header ใหม่สำหรับตรวจสอบโอเวอร์โฟลว์, เพิ่ม header สำหรับการจัดการบิต, ความเป็นไปได้ของชนิดข้อมูล 128 บิตบนสถาปัตยกรรมสมัยใหม่, และการปรับปรุงชนิดข้อมูล enum อย่างมาก
  • แนวคิดใหม่: ค่าคงที่ nullptr และชนิดพื้นฐานของมัน, คอมเมนต์เชิงไวยากรณ์ผ่าน attributes, เครื่องมือเพิ่มเติมสำหรับ type-generic programming (เช่น การอนุมานชนิดผ่าน auto และ typeof), การกำหนดค่าเริ่มต้นแบบปริยายด้วย {} (รวมถึงอาร์เรย์ความยาวแปรผัน), และ constexpr สำหรับค่าคงที่แบบมีชื่อของทุกชนิดข้อมูล
  • เนื้อหาเพิ่มเติม: เพิ่มการอภิปรายเกี่ยวกับ compound expressions และ lambda รวมถึงแนวทางรับมือความล้มเหลวของโปรแกรมแบบครอบคลุมที่เรียกว่า "internationalization" นอกจากนี้ยังมี temporary include headers และภาคผนวกเพื่อช่วยให้เปลี่ยนจากแพลตฟอร์มเดิมไปสู่ C23 ได้ง่ายขึ้น

สรุปโดย GN⁺

  • Modern C ฉบับ C23 ได้รับการอัปเดตให้สะท้อนมาตรฐาน C ใหม่ และฟีเจอร์จำนวนมากก็ถูกนำไปใช้งานแล้วในคอมไพเลอร์หลัก
  • C23 มอบการปรับปรุงสำคัญในด้านชนิดข้อมูลจำนวนเต็ม, type-generic programming และการกำหนดค่าเริ่มต้นแบบปริยาย
  • ฉบับนี้มีประโยชน์สำหรับการทำความเข้าใจและใช้งานมาตรฐานล่าสุดของภาษา C โดยเฉพาะสำหรับนักพัฒนาที่ต้องการเรียนรู้ฟีเจอร์ใหม่ ๆ อย่างรวดเร็ว
  • ภาษาอื่นที่มีฟีเจอร์คล้ายกับ C23 คือมาตรฐานล่าสุดของ C++

1 ความคิดเห็น

 
GN⁺ 2024-10-16
ความคิดเห็นบน Hacker News
  • เริ่มรองรับตั้งแต่ GCC 11 และสามารถใช้งานได้บน Ubuntu 22.04 อีกทั้งยังตรวจสอบการรองรับ C26 ได้ด้วย
  • C และ C++ เป็นคนละอย่างกัน และมีคำแนะนำสำคัญว่าอย่านำมาปะปนกัน
  • กำลังมองหารายชื่อหนังสือ C อยู่ แต่สุดท้ายก็หาคำตอบได้เอง โดย Modern C ถูกจัดว่าอยู่ในระดับกลาง
  • สารบัญในแถบด้านข้างของ macOS Preview ทำงานได้ไม่ถูกต้อง
  • กำลังมองหาบทความที่อธิบายว่าทำไม C จึงแทบหยุดอยู่ที่ C99 โดยบอกว่าแทบไม่มีโปรเจ็กต์ที่ใช้ฟีเจอร์ตั้งแต่ C11 ขึ้นไป
  • ดีใจที่ยังมีมาสคอตไดโนเสาร์อยู่ และคิดว่าเป็นหนังสือที่ดี
  • กำลังรอฟีเจอร์ #embed เมื่อคอมไพเลอร์ตามทัน ระหว่างนี้ก็ใช้ Golang ไปก่อน
  • คิดว่ามีการใช้แอตทริบิวต์อย่าง [[unsequenced]], [[maybe_unused]], [[noreturn]] มากเกินไปตลอดทั้งเล่ม รู้สึกว่าผู้เขียนใส่สิ่งที่เป็นทางเลือกได้ลงไปในตัวอย่างโค้ดทุกอันมากเกินความจำเป็น
  • ต้องการบิตฟิลด์แบบพกพาที่ระบุไว้อย่างชัดเจนและนิยามไว้ครบถ้วน
  • เป็นหนึ่งในหนังสือเล่มโปรด