ฉันต้องยอมรับว่าฉันยังคงเขียนโค้ดหลอก -89 (ไม่ตรงตามมาตรฐาน C99 ทั้งหมด) ส่วนใหญ่เป็นเพราะ Microsoft ฉันพึ่งพา MSVC อย่างมากสำหรับฝั่ง Windows และพวกเขายังไม่ได้มาตรฐาน C99 อย่างสมบูรณ์แทนที่จะวางโฟกัสจำนวนมากใน C ++ 17 ขึ้นไป
นอกจากนี้ฉันกำลังทำงานกับ C SDKs ซึ่งนักพัฒนาปลั๊กอินจำนวนมากใช้ MSVC สำหรับการพัฒนาปลั๊กอินและบางส่วนยังคงเป็น MSVC 2010 ดังนั้นยังมีคอมไพเลอร์ยอดนิยมที่ใช้กันอย่างแพร่หลายบนแพลตฟอร์มที่ไม่แปลกใหม่ (เว้นแต่คุณจะพิจารณา Windows แปลกใหม่) ที่ยังไม่ได้ติดตั้ง C99 อย่างสมบูรณ์ เมื่อคุณกำหนดเป้าหมายความเข้ากันได้อย่างกว้าง ๆ กับคอมไพเลอร์ที่ใหญ่ที่สุด (ซึ่งเป็นหนึ่งในเหตุผลหลักที่ SDK เขียนใน C และไม่ใช่ C ++) ยังคงมีการใช้งานกันอย่างแพร่หลาย (อย่างน้อย MSVC) ซึ่งล้าหลัง เมื่อมันมาถึงการสนับสนุน C เกือบสองทศวรรษแล้วตั้งแต่ C99 และเรายังไม่มี VLA เช่นใน MSVC AFAIK (ยังไม่ได้ตรวจสอบใน MSVC 2017 แต่ด้วยท่าทางของ Microsoft ใน C ฉันสงสัยว่ามันสอดคล้องกับ C99 มากขึ้น) .
น่าเสียดายที่มีคอมไพเลอร์ตัวใหม่ที่ค่อนข้างดีกับตัวเพิ่มประสิทธิภาพและตัวดีบั๊กที่ยังไม่เข้ากับ C99 แน่นอนถ้าไม่ใช่สำหรับสิ่งนี้ฉันจะกระโดดข้าม C11
นอกจากความเข้ากันได้ของแหล่งที่มากับปลั๊กอินและ MSVC แล้วยังมีการทำงานร่วมกันกับภาษาอื่น ๆ ภาษาอื่นบางภาษาใช้ SDK ผ่าน FFI และ FFIs บางรายการนั้นเข้าใจ C89 เท่านั้น พวกเขาอาจจะไม่เข้าใจbool
หรือ_Bool
เป็นตัวอย่างง่ายๆเมื่อนำเข้าจากฟังก์ชั่น dylib int
และมีเพียงเข้าใจพูด
ใช่ข้อโต้แย้งที่เห็นได้ชัดคือความสะดวกในการพกพา แต่คำถามก็คือถ้ามีระบบที่ไม่ใช่สมมุติฐานซึ่งสามารถใช้คอมไพเลอร์ C89 เท่านั้น แต่กำลังรวบรวมการกระจายตัวของซอฟต์แวร์ใหม่ เช่นถ้าฉันเริ่มโครงการ C ใหม่ฉันจะตัดสินใจได้อย่างไรว่าการปฏิบัติตาม C89 สามารถเพิ่มจำนวนผู้ใช้ที่มีศักยภาพได้อย่างไร
เพิ่งสังเกตเห็นสิ่งนี้ แต่ชนิดของการสะท้อนBlrfl
การเพิ่มผลิตภาพโดยใช้ C99 และ C11 ไม่ใหญ่หลวงในกรณีของฉันในขณะที่สูญเสียความสามารถในการอนุญาตให้ผู้คนเขียนปลั๊กอินของพวกเขาใน MSVC อาจมีค่าใช้จ่ายสูงมาก บนมีส่วนแบ่งการตลาดที่ใหญ่ที่สุดโดยทางด้าน Windows และผู้ใช้โดยเฉลี่ยมักจะซื้อและดาวน์โหลดปลั๊กอินบุคคลที่สามจำนวนมาก) ผลิตภัณฑ์ที่ฉันทำงานอยู่เกือบครึ่งทางระหว่างสภาพแวดล้อมการพัฒนาสำหรับโปรแกรมเมอร์ / สแครปเตอร์และผลิตภัณฑ์ผู้ใช้สำหรับศิลปินเนื่องจากผู้คนจำนวนมากต้องการที่จะพัฒนาสิ่งใหม่ ๆ เพื่อให้ความสามารถใหม่และบรรลุผลพิเศษของ คนใจดียังไม่เห็น ดังนั้นในกรณีของฉันมันค่อนข้างง่ายที่จะตัดสินใจเลือก C89 อย่างน้อยสำหรับ SDK
ฉันคิดว่าคุณต้องดูคอมไพเลอร์รอบ ๆ ตัวคุณและพยายามหากลุ่มประชากรเป้าหมายของคุณ หากคุณไม่ได้พัฒนาสถาปัตยกรรมปลั๊กอินสำหรับ Windows หรือทำการเขียนโปรแกรมแบบฝังตัวใด ๆ หรือพยายามสร้างชุดพัฒนาซอฟต์แวร์ที่สามารถใช้งานได้โดยคอมไพเลอร์และภาษาที่หลากหลายที่สุดนั่นก็จะทำให้เข้าถึง C99 + ได้ง่ายขึ้นแน่นอน ไป นอกจากนี้ยังอาจพิจารณาจำนวนการเพิ่มประสิทธิภาพที่คุณได้รับในรูปแบบ C99 เป็นต้นไป ฉันไม่ได้รับประโยชน์อะไรมากมายจากสิ่งต่าง ๆ เช่น VLAs เนื่องจากฉันใช้วิธีที่ง่ายพอในการใช้สแต็กเมื่อข้อมูลเหมาะสมและเป็นอย่างอื่น
แต่มีหลายสิ่งหลายอย่างที่ล้าหลังจากคอมไพเลอร์ยอดนิยมเช่น MSVC ถึง FFI ในภาษาอื่นซึ่งมีความเท่ห์ในแง่ที่ว่าพวกเขาสามารถนำเข้าและเรียกใช้ฟังก์ชั่น C โดยตรงจาก dylib แต่อาจเป็นบิตอยู่เบื้องหลัง ครั้ง ดังนั้นจึงมีสิ่งที่ต้องพิจารณาในเชิงธุรกิจขึ้นอยู่กับโดเมนของคุณมากกว่าแค่ให้ความแก่กว่าและเป็นมาตรฐานสำหรับสุนทรียศาสตร์บางประเภท