คำถามติดแท็ก c

C เป็นภาษาโปรแกรมคอมพิวเตอร์ทั่วไปที่ใช้สำหรับระบบปฏิบัติการเกมและงานที่มีประสิทธิภาพสูงอื่น ๆ

4
มีแนวทางที่ยอมรับกันโดยทั่วไปเกี่ยวกับวิธีการเขียน C สมัยใหม่หรือไม่?
ฉันมีพื้นหลัง Java / Groovy ที่แข็งแกร่งและฉันได้รับมอบหมายให้ทำงานกับทีมที่ดูแลฐานรหัส C ที่ค่อนข้างใหญ่สำหรับซอฟต์แวร์การดูแลระบบ บางจุดปวดเช่นการจัดการกับหยดในฐานข้อมูลหรือการสร้างรายงานใน PDF และ Excel ได้รับการส่งไปยังบริการเว็บ java อย่างไรก็ตามในฐานะที่เป็น Java dev ฉันรู้สึกสับสนเล็กน้อยกับบางส่วนของรหัส: มันเป็น verbose (โดยเฉพาะอย่างยิ่งเมื่อจัดการกับ 'ข้อยกเว้น') มีวิธีการขนาดใหญ่มากมาย (วิธีการ 2000 + บรรทัดหลายวิธี) ไม่มีโครงสร้างข้อมูลขั้นสูง (ฉันพลาดรายการตั้งค่าและแผนที่เป็นจำนวนมาก) ไม่มีการแยกข้อกังวล (SQL ผสมปนเปกันอย่างสนุกสนาน) ด้วยเหตุนี้ฉันจึงรู้สึกว่าธุรกิจถูกซ่อนอยู่ในรหัสทางเทคนิคและสมองของฉันที่ถูกสร้างขึ้นด้วย Object Oriented และการเขียนโปรแกรมเชิงฟังก์ชั่น ข้อดีของโครงการคือรหัสตรงไปตรงมา: ไม่มีเฟรมเวิร์กไม่มีการจัดการโค้ดไบต์ที่รันไทม์ไม่มี AOP และเซิร์ฟเวอร์สามารถตอบผู้ใช้มากกว่า 10,000 คนพร้อมกันด้วยเครื่องเดียวโดยใช้หน่วยความจำน้อยกว่าจาวาต้องคาย "hello world" ฉันต้องการเรียนรู้วิธีการเขียนรหัส C ตามหลักการสมัยใหม่ที่เป็นที่ยอมรับกันทั่วไป มีหลักการใด ๆ ที่เป็นที่ยอมรับกันโดยทั่วไปเกี่ยวกับวิธีการเขียนและโครงสร้าง C …
13 c  maintenance 

4
C โครงสร้างสามารถทำงานเหมือนมันมีฟังก์ชั่นหรือไม่?
ฉันใช้ C และstructs ที่ struct สามารถมีสมาชิก แต่ไม่ใช่ฟังก์ชั่น สมมติว่าสำหรับความเรียบง่ายที่ฉันต้องการที่จะสร้าง struct สำหรับสตริงที่ฉันชื่อstrและฉันต้องการที่จะสามารถที่จะทำstr.replace(int i, char c)ที่iเป็นดัชนีของสตริงและเป็นตัวละครที่จะแทนที่ตัวอักษรที่ตำแหน่งc iสิ่งนี้จะไม่เป็นไปได้หรือไม่เนื่องจาก structs ไม่มีฟังก์ชั่นหรือยังมีวิธีที่เราสามารถใช้พฤติกรรมนี้และเลียนแบบได้ว่าโครงสร้างอาจมีฟังก์ชั่น (ง่าย) ที่จริง ๆ แล้วคือ struct คัดลอกตัวเองไปที่ struct ใหม่ เขตข้อมูลซึ่งจะทำอย่างไร ดังนั้นreplaceอาจเป็นสมาชิกที่สามของโครงสร้างที่ชี้ไปที่โครงสร้างใหม่ที่มีการปรับปรุงเมื่อมีการเข้าถึงหรือคล้ายกัน ทำได้หรือไม่ หรือมีบางอย่างในตัวหรือทฤษฎีหรือกระบวนทัศน์ที่ป้องกันความตั้งใจของฉัน พื้นหลังคือฉันกำลังเขียนรหัส C และฉันพบว่าตัวเองมีฟังก์ชั่นการฟื้นฟูที่ฉันรู้ว่าเป็นตัวสร้างไลบรารีในภาษา OOP และ OOP จะเป็นวิธีที่ดีในการจัดการสตริงและคำสั่ง

4
มีวิธีมาตรฐานหรือทางเลือกมาตรฐานในการบรรจุ struct ใน c หรือไม่?
เมื่อการเขียนโปรแกรมใน CI พบว่ามันมีค่ามากที่จะแพ็ค structs โดยใช้__attribute__((__packed__))แอตทริบิวต์GCCs ดังนั้นฉันสามารถแปลงกลุ่มของหน่วยความจำที่มีโครงสร้างเป็นอาร์เรย์ไบต์ที่จะส่งผ่านบัสได้อย่างง่ายดายบันทึกไปยังหน่วยเก็บหรือนำไปใช้กับบล็อกของรีจิสเตอร์ โครงสร้างแบบแพ็ครับประกันว่าเมื่อได้รับการปฏิบัติเป็นอาร์เรย์ไบต์จะไม่มีการบรรจุใด ๆ ซึ่งทั้งสองสิ้นเปลืองความเสี่ยงด้านความปลอดภัยที่เป็นไปได้และอาจเข้ากันไม่ได้เมื่อเชื่อมต่อกับฮาร์ดแวร์ ไม่มีมาตรฐานสำหรับโครงสร้างการจัดวางที่ทำงานได้ในคอมไพเลอร์ C ทั้งหมดหรือไม่? ถ้าไม่เช่นนั้นฉันคิดว่านี่เป็นคุณสมบัติที่สำคัญอย่างยิ่งสำหรับการเขียนโปรแกรมระบบ? ผู้ใช้ภาษา C ต้นไม่พบความต้องการโครงสร้างการจัดเก็บหรือมีทางเลือกบางอย่างหรือไม่?

6
ทำไมอาร์เรย์ C ถึงมีความยาวไม่ถึง 0
มาตรฐาน C11 บอกว่าอาร์เรย์ทั้งขนาดและความยาวของตัวแปร "จะมีค่ามากกว่าศูนย์" อะไรคือเหตุผลที่ไม่อนุญาตให้มีความยาว 0 โดยเฉพาะอย่างยิ่งสำหรับอาร์เรย์ที่มีความยาวผันแปรมันเหมาะสมที่จะมีขนาดเป็นศูนย์ทุก ๆ ครั้ง นอกจากนี้ยังมีประโยชน์สำหรับอาร์เรย์แบบสแตติกเมื่อขนาดมาจากแมโครหรือตัวเลือกการกำหนดค่าการสร้าง GCC ที่น่าสนใจ (และเสียงดังกราว) ให้ส่วนขยายที่อนุญาตให้มีอาร์เรย์ความยาวเป็นศูนย์ Java ยังอนุญาตให้มีอาร์เรย์ของความยาวเป็นศูนย์
13 c  array 

4
อะไรเป็นสิ่งสำคัญเมื่อปรับแต่งแคช CPU (ใน C)
อ่านหนังสือเหล่านี้สองคำถามผมเห็นว่าพฤติกรรมของแคช CPU เข้าใจสามารถที่สำคัญเมื่อต้องรับมือกับข้อมูลจำนวนมากในหน่วยความจำ ฉันต้องการเข้าใจวิธีการทำงานของแคชเพื่อเพิ่มเครื่องมืออื่นลงในกล่องเครื่องมือเพิ่มประสิทธิภาพของฉัน ประเด็นหลักเกี่ยวกับวิธีการทำงานของแคช CPU เพื่อให้ฉันสามารถเขียนโค้ดที่ใช้อย่างสมเหตุสมผลได้อย่างไร มีวิธีในการรหัสโปรไฟล์เพื่อดูว่าการใช้แคชที่ไม่ดีกำลังทำให้ช้าลงหรือไม่?

5
ฉันจะปรับปรุงการตรวจสอบและจัดการข้อผิดพลาดได้อย่างไร
เมื่อเร็ว ๆ นี้ฉันพยายามดิ้นรนที่จะเข้าใจว่าการตรวจสอบในปริมาณที่เหมาะสมคืออะไรและวิธีการที่เหมาะสมคืออะไร ฉันมีคำถามสองสามข้อเกี่ยวกับเรื่องนี้: เป็นวิธีที่เหมาะสมในการตรวจสอบข้อผิดพลาด (อินพุตไม่ดี, รัฐไม่ดี ฯลฯ ) คืออะไร? เป็นการดีกว่าที่จะตรวจสอบข้อผิดพลาดอย่างชัดเจนหรือใช้ฟังก์ชั่นเช่นการยืนยันที่สามารถปรับให้เหมาะสมกับโค้ดสุดท้ายของคุณ? ฉันรู้สึกเหมือนกำลังตรวจสอบโปรแกรมอย่างชัดเจนด้วยรหัสพิเศษจำนวนมากซึ่งไม่ควรถูกเรียกใช้ในสถานการณ์ส่วนใหญ่อย่างไรก็ตาม - และไม่พูดถึงข้อผิดพลาดส่วนใหญ่ที่จบลงด้วยความล้มเหลวในการยกเลิก / ออก เหตุใดจึงมีฟังก์ชั่นตรวจสอบอย่างชัดเจนว่าจะยกเลิกหรือไม่ ฉันได้มองหา asserts เทียบกับการตรวจสอบข้อผิดพลาดอย่างชัดเจนและพบว่ามีเพียงเล็กน้อยที่จะอธิบายอย่างแท้จริงเมื่อต้องทำเช่นกัน ส่วนใหญ่พูดว่า 'ใช้ข้อความยืนยันเพื่อตรวจสอบข้อผิดพลาดเชิงตรรกะและใช้การตรวจสอบอย่างชัดเจนเพื่อตรวจสอบความผิดพลาดอื่น ๆ ' ดูเหมือนว่าจะไม่ได้รับเราไปไกลมาก เราจะพูดว่าเป็นไปได้หรือไม่: Malloc returning null, check explictly API user inserting odd input for functions, use asserts สิ่งนี้จะทำให้ฉันดีขึ้นเมื่อตรวจสอบข้อผิดพลาดหรือไม่ ฉันจะทำอะไรได้อีก ฉันต้องการปรับปรุงและเขียนรหัส 'มืออาชีพ' ให้ดีขึ้น
13 c  testing  assertions 

2
ทำไม glibc จึงถูกดูแลแยกจาก GCC
GCC เป็นคอมไพเลอร์ C Glibc เป็นไลบรารี C อย่างไรก็ตามมันเป็นความจำเป็นอย่างยิ่งสำหรับคอมไพเลอร์และไลบรารีมาตรฐานที่รวมเข้าด้วยกันเป็นการนำ C ไปใช้หรือไม่? ยกตัวอย่างเช่นห้องสมุด C มี ABI และคอมไพเลอร์ที่เฉพาะเจาะจงสิ่งที่ชอบ<limits.h>, <stdint.h>เป็นต้นซึ่งแตกต่างระหว่างคอมไพเลอร์และ API และรายละเอียดเช่น "วิธีการเรียกใช้ฟังก์ชั่นหลัก" นั้นยังขึ้นอยู่กับคอมไพเลอร์libc.soด้วย ตัวอย่างเช่นถ้าฉันเปลี่ยนคอมไพเลอร์ให้ทำงานกับ ABI อื่นเช่นใช้intกับ 8 ไบต์ไลบรารี C จะไม่ทำงานอีกต่อไปเพราะสิ่งที่อยู่ใน<limits.h>นั้นจะผิด
13 c  gcc 

6
“ เขียนแอสเซมเบลอร์เป็น C” ทำไมต้องเขียนโปรแกรมแปลรหัสเครื่องสำหรับภาษาระดับต่ำในภาษาระดับสูงกว่า
ผู้สอนคลาสไมโครโปรเซสเซอร์ของฉันให้การบ้านและบอกว่า: "เขียนแอสเซมเบลอร์เป็น C" - ศาสตราจารย์ที่รักของฉัน ดังนั้นมันดูไร้เหตุผลสำหรับฉันเล็กน้อย ถ้าฉันไม่ผิดภาษาแอสเซมบลีเป็นขั้นตอนแรกจากรหัสเครื่องไปยังการเดินทางของภาษาระดับสูงกว่า ฉันหมายถึง C เป็นภาษาระดับสูงกว่าการชุมนุม แล้วประเด็นของการเขียน Assembler ใน C คืออะไร? สิ่งที่พวกเขาทำในอดีตในขณะที่ไม่มีภาษา C? พวกเขากำลังเขียน Assembler ในรหัสเครื่องหรือไม่? ฉันไม่ควรเขียนตัวแปลรหัสเครื่องสำหรับภาษาระดับต่ำในภาษาระดับสูงกว่านี้ สมมติว่าเราได้สร้างสถาปัตยกรรมไมโครโปรเซสเซอร์ใหม่ที่ไม่มีแม้แต่คอมไพเลอร์ C สำหรับสถาปัตยกรรมนั้น ผู้ประกอบของเราที่เขียนใน C จะสามารถจำลองสถาปัตยกรรมใหม่ได้หรือไม่? ฉันหมายความว่ามันจะไร้ประโยชน์หรือไม่? ฉันรู้ได้อย่างไรว่า GNU Assembler และ Netwide Assembler เขียนด้วยภาษาซีฉันยังสงสัยว่าทำไมพวกเขาถึงเขียนเป็น C สุดท้ายนี้คือตัวอย่างซอร์สโค้ดสำหรับแอสเซมเบลอร์ที่อาจารย์ของเรามอบให้เรา: // to compile, gcc assembler.c -o assembler // No error check is provided. …

3
จัดเก็บค่าลบที่เซ็นชื่ออย่างไร
ฉันกำลังดูวิดีโอนี้เกี่ยวกับค่าสูงสุดและต่ำสุดของจำนวนเต็มที่ลงนามแล้ว นำตัวอย่างของค่าที่มีเครื่องหมายบวก - 0000 0001 บิตแรกแสดงว่าจำนวนเป็นค่าบวกและ 7 บิตสุดท้ายเป็นตัวเลขเอง ดังนั้นจึงตีความได้ง่ายว่า +1 ทีนี้ลองดูตัวอย่างค่าลบที่มีเครื่องหมาย - 1,000 0000 ซึ่งออกมาเป็น -8 โอเคคอมพิวเตอร์สามารถเข้าใจได้ว่ามันเป็นค่าลบเพราะบิตแรก แต่มันเข้าใจได้อย่างไรว่า 000 0000 หมายถึง -8? โดยทั่วไปแล้วค่าจัดเก็บข้อมูลเชิงลบที่เก็บ / ตีความในคอมพิวเตอร์เป็นอย่างไร

6
แบบแผนการตั้งชื่อที่ใช้สำหรับตัวแปรและฟังก์ชั่นใน C [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ในขณะที่การเข้ารหัสโครงการขนาดใหญ่ใน CI เกิดปัญหาขึ้น ถ้าฉันเขียนรหัสเพิ่มขึ้นเรื่อย ๆ มันจะมีเวลาที่ฉันจะจัดระเบียบรหัสได้ยาก ฉันหมายถึงว่าการตั้งชื่อสำหรับฟังก์ชั่นและตัวแปรสำหรับส่วนต่าง ๆ ของโปรแกรมอาจดูสับสน ดังนั้นฉันจึงคิดว่ามีแบบแผนการตั้งชื่อที่มีประโยชน์ที่ฉันสามารถใช้กับตัวแปร C และฟังก์ชั่นได้หรือไม่? ภาษาส่วนใหญ่แนะนำให้ใช้หลักการตั้งชื่อ แต่สำหรับ C สิ่งเดียวที่ฉันได้อ่านจนถึงตอนนี้คือชื่อควรเป็นคำอธิบายสำหรับการอ่านโค้ด แก้ไข: ตัวอย่างของตัวอย่างของแบบแผนการตั้งชื่อที่แนะนำ: Python PEP 8 สอน Java ฉันอ่านอนุสัญญาการตั้งชื่อเพิ่มเติมสำหรับ Java บางแห่ง แต่จำไม่ได้ว่าอยู่ที่ไหน
13 c  naming 

4
โครงการ C หลีกเลี่ยงความขัดแย้งในการตั้งชื่อ
ฉันกำลังดิ้นรนเพื่อหาคำแนะนำในโลกแห่งความเป็นจริงในทางปฏิบัติเกี่ยวกับการตั้งชื่อฟังก์ชั่นสำหรับโครงการห้องสมุดซีขนาดกลาง โครงการห้องสมุดของฉันถูกแยกออกเป็นสองสามโมดูลและ submodules ด้วยส่วนหัวของพวกเขาเองและตามสไตล์ OO (ฟังก์ชั่นทั้งหมดใช้โครงสร้างที่แน่นอนว่าเป็นอาร์กิวเมนต์แรกไม่มี globals ฯลฯ ) มันเป็นสิ่งที่เราชอบ: MyLib - Foo - foo.h - foo_internal.h - some_foo_action.c - another_foo_action.c - Baz - baz.h - some_baz_action.c - Bar - bar.h - bar_internal.h - some_bar_action.c โดยทั่วไปฟังก์ชั่นนั้นใหญ่เกินกว่าจะยกตัวอย่างเช่นsome_foo_actionและanother_foo_actionในfoo.cไฟล์การนำไปใช้งานทำให้ฟังก์ชั่นส่วนใหญ่คงที่และเรียกมันว่าวัน ฉันสามารถจัดการกับการลอกสัญลักษณ์ภายใน ("โมดูลส่วนตัว") เมื่อสร้างห้องสมุดเพื่อหลีกเลี่ยงความขัดแย้งสำหรับผู้ใช้ของฉันด้วยโปรแกรมไคลเอนต์ของพวกเขา แต่คำถามคือวิธีตั้งชื่อสัญลักษณ์ในห้องสมุดของฉัน? จนถึงตอนนี้ฉันได้ทำ: struct MyLibFoo; void MyLibFooSomeAction(MyLibFoo *foo, ...); struct MyLibBar; void …

9
อาร์เรย์หรือ Malloc?
ฉันใช้รหัสต่อไปนี้ในแอปพลิเคชันของฉันและมันใช้ได้ดี แต่ฉันสงสัยว่ามันจะดีกว่าที่จะทำมันด้วย malloc หรือปล่อยให้มันเป็นอย่างนั้นหรือ function (int len) { char result [len] = some chars; send result over network }
13 c 

8
สตริง C ถูกยกเลิกเป็นโมฆะเสมอหรือขึ้นอยู่กับแพลตฟอร์มหรือไม่
ตอนนี้ฉันกำลังทำงานกับระบบฝังตัวและหาวิธีที่จะใช้สตริงในไมโครโปรเซสเซอร์ที่ไม่มีระบบปฏิบัติการ จนถึงตอนนี้สิ่งที่ฉันทำคือการใช้ความคิดของการมีตัวชี้ NULL สิ้นสุดตัวอักษรและปฏิบัติต่อพวกเขาเป็นสตริงที่ NULL หมายถึงจุดสิ้นสุด ฉันรู้ว่านี่เป็นเรื่องธรรมดา แต่คุณสามารถเสมอนับเกี่ยวกับเรื่องนี้จะเป็นกรณีที่? เหตุผลที่ฉันถามคือฉันกำลังคิดว่าอาจจะใช้ระบบปฏิบัติการแบบเรียลไทม์ในบางจุดและฉันต้องการใช้รหัสปัจจุบันของฉันให้มากที่สุด ดังนั้นสำหรับตัวเลือกต่าง ๆ ที่อยู่ข้างนอกฉันจะคาดหวังได้ไหมว่าสตริงจะทำงานเหมือนกันหรือไม่? ให้ฉันเจาะจงมากขึ้นสำหรับกรณีของฉัน ฉันกำลังใช้ระบบที่ใช้และประมวลผลคำสั่งผ่านพอร์ตอนุกรม ฉันสามารถรักษารหัสการประมวลผลคำสั่งของฉันไว้เหมือนกันได้หรือไม่แล้วคาดว่าวัตถุสตริงที่สร้างขึ้นบน RTOS (ซึ่งมีคำสั่ง) ทั้งหมดนี้จะถูกยกเลิกเป็น NULL หรือไม่ หรือว่ามันจะแตกต่างกันไปตามระบบปฏิบัติการหรือไม่ ปรับปรุง หลังจากได้รับคำแนะนำให้ดูคำถามนี้ฉันตัดสินใจแล้วว่าไม่ตอบคำถามที่ฉันขอ คำถามก็คือการถามว่าความยาวของสตริงควรส่งผ่านซึ่งแตกต่างอย่างสิ้นเชิงกับสิ่งที่ฉันถามหรือไม่และถึงแม้ว่าคำตอบบางส่วนจะมีข้อมูลที่เป็นประโยชน์ในพวกเขาพวกเขาไม่ใช่สิ่งที่ฉันกำลังมองหา คำตอบที่ดูเหมือนจะให้เหตุผลว่าทำไมหรือทำไมไม่ยุติสตริงด้วยอักขระ null ความแตกต่างกับสิ่งที่ฉันถามคือถ้าฉันสามารถคาดหวังมากขึ้นหรือน้อยลงสตริงที่เกิดในแพลตฟอร์มที่แตกต่างกันเพื่อยุติสตริงของตัวเองด้วย null โดยไม่ต้องออกไปข้างนอกและลองทุกแพลตฟอร์มเดียวถ้ามันสมเหตุสมผล

4
อะไรคือความเสี่ยง / ความเสี่ยงด้านความปลอดภัยของโปรแกรมเมอร์ C ทุกคนที่ต้องระวัง? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว มีความเสี่ยงด้านความปลอดภัยมากมายจากการสัมผัสอย่างใกล้ชิดกับฮาร์ดแวร์ซึ่งต่างจากการใช้ API ที่ผ่านการทดสอบและผ่านการพิสูจน์แล้วจากภาษาโปรแกรมระดับสูง มันง่ายกว่ามากที่จะทำให้บัฟเฟอร์ล้นใน C กว่าในภาษาเช่น Java อะไรคือความเสี่ยงหรือช่องโหว่ (เช่น buffer overflow) ที่โปรแกรมเมอร์ C ทุกคนควรระวัง (ช่องโหว่ IE ที่เกี่ยวข้องกับโปรแกรมเมอร์ C) ปัญหาเหล่านี้นำไปสู่ปัญหาอะไร จะหลีกเลี่ยงพวกเขาได้อย่างไรและอะไรคือข้อผิดพลาดทั่วไปที่ทำให้สิ่งเหล่านี้เกิดขึ้นในโปรแกรม?

3
เมื่อใดที่โครงการ C ใหม่ควรตั้งเป้าหมายมาตรฐาน C ที่เก่ามาก (> 20 ปีเช่น C89)
บางครั้งฉันเห็นโครงการ C โอเพ่นซอร์สที่สำคัญและค่อนข้างใหม่ซึ่งมีเป้าหมายมาตรฐาน C ที่เก่ามากโดยทั่วไปคือ C89 ตัวอย่างคือ systemd โครงการเหล่านี้มีคนฉลาดอยู่ที่หางเสือดังนั้นพวกเขาอาจมีเหตุผลที่ดีหลังการตัดสินใจครั้งนี้ซึ่งฉันไม่รู้ ประโยชน์ที่ได้จากข้อสงสัยนั้นดูเหมือนว่าเหตุผลก็คือ "เก่ากว่าและมาตรฐานมักพกพาได้ดีกว่าและดีกว่า" ซึ่งไร้สาระเพราะข้อสรุปเชิงตรรกะคือ FORTRAN ดีกว่า C และ COBOL ดีกว่า FORTRAN เมื่อใดและเพราะเหตุใดโครงการ C ใหม่จึงกำหนดเป้าหมายมาตรฐาน C ที่เก่ามาก ฉันไม่สามารถจินตนาการถึงสถานการณ์ที่ระบบของผู้ใช้ต้องไม่อัปเดต C คอมไพเลอร์ แต่ไม่สามารถติดตั้งซอฟต์แวร์ใหม่ได้ ตัวอย่างเช่นเวอร์ชัน LTS ของ Debian มีแพ็กเกจ gcc 4.6 ซึ่งรองรับ C99 และ C11 บางส่วน ฉันเดาว่าต้องมีสถานการณ์แปลก ๆ และโปรแกรมเช่น systemd กำลังกำหนดเป้าหมายผู้ใช้เหล่านั้น ส่วนใหญ่กรณีการใช้งานที่เหมาะสมฉันสามารถจินตนาการเป็นที่ที่ผู้ใช้คาดว่าจะมีสถาปัตยกรรมที่แปลกใหม่ที่มีเพียงเรียบเรียง C89 ใช้ได้ แต่พวกเขาอย่างเต็มที่เต็มใจที่จะติดตั้งซอฟต์แวร์ใหม่ เนื่องจากความหลากหลายของสถาปัตยกรรมชุดการเรียนการสอนลดลงซึ่งดูเหมือนว่าเป็นสถานการณ์สมมุติมากเกินไป …
12 c  standards 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.