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

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

5
วิธีการประยุกต์ใช้หลักการจำแนกส่วนต่อประสานใน C?
ฉันมีโมดูลพูดว่า 'M' ซึ่งมีลูกค้าไม่กี่คนให้พูดว่า 'C1', 'C2', 'C3' ฉันต้องการที่จะแบ่งปัน namespace ของโมดูล M คือการประกาศของ API และข้อมูลที่มันเปิดเผยลงในไฟล์ส่วนหัวในลักษณะที่ - สำหรับลูกค้าใด ๆ จะเห็นเฉพาะข้อมูลและ API ที่ต้องการเท่านั้น ส่วนที่เหลือของเนมสเปซของโมดูลถูกซ่อนจากไคลเอนต์เช่นเป็นไปตามหลักการแยกส่วน การประกาศไม่ซ้ำในหลายไฟล์ส่วนหัวเช่นไม่ละเมิด แห้ง โมดูล M ไม่มีการพึ่งพาลูกค้า ลูกค้าไม่ได้รับผลกระทบจากการเปลี่ยนแปลงที่เกิดขึ้นในส่วนของโมดูล M ที่ไม่ได้ใช้ ลูกค้าที่มีอยู่ไม่ได้รับผลกระทบจากการเพิ่ม (หรือลบ) ของลูกค้าเพิ่มเติม ขณะนี้ฉันจัดการเรื่องนี้โดยการแบ่งเนมสเปซของโมดูลขึ้นอยู่กับความต้องการของลูกค้า ตัวอย่างเช่นในภาพด้านล่างส่วนต่างๆของเนมสเปซของโมดูลที่ลูกค้า 3 รายต้องการ ความต้องการของลูกค้ามีการทับซ้อนกัน namespace โมดูลแบ่งออกเป็น 4 ส่วนหัวของไฟล์ที่แยกต่างหาก - 'a', '1', '2' และ '3' อย่างไรก็ตามสิ่งนี้เป็นการละเมิดข้อกำหนดดังกล่าวบางประการเช่น R3 และ R5 …
15 c  interfaces  solid 

10
อะไรที่ทำให้นักพัฒนา C อยากรู้อยากเห็นถ้า "i ++ == ++ i"? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา เพียงสังเกตแบบสุ่มดูเหมือนว่าใน StackOverflow.com มีคำถามเกี่ยวกับว่า "++ i == i ++" คำถามนั้นถูกถามตลอดเวลา แต่ฉันคิดว่าฉันเห็นมันถามประมาณ 6 หรือ 7 ครั้งใน 2 เดือนที่ผ่านมา ฉันแค่สงสัยว่าทำไมนักพัฒนา C ถึงสนใจ? มีแนวคิด / คำถามเดียวกันสำหรับ C # และ Java devs เช่นกัน แต่ฉันคิดว่าฉันเห็นคำถามที่เกี่ยวข้องกับ C # เพียงรายการเดียว เป็นเพราะตัวอย่างมากมายใช้ ++ i เป็นเพราะมีหนังสือหรือแบบฝึกหัดยอดนิยมบ้างไหม? เป็นเพราะผู้พัฒนา C รักที่จะยัดเยียดให้มากที่สุดเท่าที่จะทำได้ในบรรทัดเดียวสำหรับ 'ประสิทธิภาพ' / 'ประสิทธิภาพ' และดังนั้นจึงพบโครงสร้าง …

4
คุณจะเขียนโค้ดอย่างไรเมื่อคุณไม่รู้ว่ามันใช้งานได้จริงอย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ฉันเพิ่งเรียนรู้ C และต้องการเริ่มโครงการเพื่อเสริมสร้างความรู้ของฉัน ฉันได้ตัดสินใจที่จะสร้างโปรแกรมแก้ไขข้อความแบบง่าย ๆ อย่าง vim ปัญหาที่ฉันเผชิญคือฉันไม่มีเงื่อนงำว่าตัวแก้ไขข้อความใช้งานได้ดีจริง ๆ และฉันไม่รู้ว่าจะต้องเรียนรู้อะไรเกี่ยวกับ Google Googling เกี่ยวกับเรื่องนี้นำไปสู่ ​​GitHub repo ซึ่งเป็นประโยชน์ต่อฉันเพราะ codebase นั้นใหญ่และรหัสทำให้ฉันสับสน ฉันยังพบบทช่วยสอนสำหรับการสร้างโปรแกรมแก้ไขข้อความใน C ซึ่งทำหน้าที่คล้ายกับเสียงเรียกเข้า แม้ว่าฉันจะคิดถึงการติดตามบทเรียน แต่ก็รู้สึกเหมือนโกง นักพัฒนา vim หาวิธีเขียนโค้ดเป็นอย่างไรโดยไม่ต้องใช้บทเรียนที่เฉพาะเจาะจง หรือพวกเขาเริ่มจากโปรแกรมแก้ไขข้อความที่ง่ายกว่า? พวกเขาคิดยังไงจากความรู้ภาษาและเอกสารประกอบของพวกเขา อะไรคือสิ่งที่ฉันต้องการเพื่อเริ่มเขียนตัวแก้ไขข้อความนี้โดยไม่ต้องติดตามการสอนโดยตรง อีกตัวอย่างที่ฉันคิดคือเดนนิสริตชี่และเคน ธ อมป์สันโค้ดยูนิกซ์ขึ้นมาได้อย่างไร ฉันมีความคิดเกี่ยวกับวิธีการทำงานของระบบปฏิบัติการ แต่ฉันไม่รู้ว่าจะใส่รหัสอย่างไร อะไรที่ฉันขาดหายไป? ฉันจะถ่ายทอดความรู้ภาษานี้ไปสู่การใช้งานจริงและใช้งานจริงได้อย่างไร?
14 c  languages 

3
สนับสนุนการพัฒนาระบบปฏิบัติการรุ่นเก่า
ฉันกำลังบำรุงรักษารหัสมรดกส่วนใหญ่เขียนด้วยภาษาซีรหัสนี้ถูกเขียนขึ้นครั้งแรกเพื่อเป็น comiled กับ Windows 3 สำหรับ Workgroups และรุ่นที่ใหม่กว่าสำหรับ NT ถูกสร้างขึ้น แอปพลิเคชั่นรุ่นเก่านี้ยังคงใช้งานได้ในปัจจุบันทำงานอย่างสนุกสนานบนเวิร์กสเตชัน 3.11 และ NT จากต้นยุค 90 มันใช้งานได้และทำในสิ่งที่ควรทำและเหตุผลที่พวกเขายังคงใช้งานอยู่คือไดรเวอร์สำหรับฮาร์ดแวร์ที่กำหนดเองซึ่งเป็นของโซลูชันไม่เข้ากันได้กับ Windows ในภายหลัง นอกจากนี้ยังมีแอปพลิเคชั่นอื่นที่ฉันยืนยันว่าด้วยเหตุผลเดียวกันนี้ใช้งานได้กับ Win2k เท่านั้น อย่างไรก็ตามในขณะที่สิ่งต่าง ๆ ดำเนินต่อไปมันก็ยากที่จะเรียกใช้สภาพแวดล้อมแบบดั้งเดิมเหล่านี้ ตอนนี้ฉันเก็บเครื่องทางกายภาพไว้กับซอฟต์แวร์การพัฒนาที่ติดตั้งดังนั้นฉันจึงสามารถทำงานกับฮาร์ดแวร์ดั้งเดิมได้ แต่สิ่งเหล่านี้อาจตายได้ตลอดเวลา (พวกเขามีอายุ 25 ปี) ดังนั้นคำถามของฉันคือเมื่อเห็นว่าเป็นปี 2559 อะไรคือตัวเลือกของฉันสำหรับการรักษาสภาพแวดล้อมโบราณนี้ในวิธีที่มีเสถียรภาพมากขึ้น? คุณสามารถย้าย 3.11 ไปยังโฮสติ้งคลาวด์ได้หรือไม่ ฉันลองใช้การจำลองเสมือน แต่เนื่องจากลักษณะเฉพาะของการตั้งค่าฉันไม่สามารถใช้งานได้กับไดรเวอร์อุปกรณ์ดังนั้นฉันคิดว่าอาจต้องทำให้ภาพเต็มของระบบปฏิบัติการตามที่เป็นอยู่แล้วจึงเรียกใช้งานใน VM เพื่อพัฒนาซอฟต์แวร์หรือไม่ สิ่งนี้เป็นไปได้หรือไม่สำหรับแขกระบบปฏิบัติการรุ่นเก่าที่เป็น Win3 และ NT มีประสบการณ์ในการรักษาแพลตฟอร์มเก่า ๆ เช่นนี้เพื่อการพัฒนาหรือไม่ แต่ในแบบที่ทันสมัยกว่าและปลอดภัยกว่าที่ฉันสามารถดึงดูดได้ เป้าหมายของฉันคือการกำจัดเครื่องเก่าออกและย้ายไปยังระบบเสมือนจริง
14 c  windows  legacy 

5
การเขียน object oriented C เป็นสิ่งที่ดีหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันมักจะเขียนโค้ดใน C ที่ส่วนใหญ่เป็นเชิงวัตถุดังนั้นพูดว่าฉันมีไฟล์ต้นฉบับหรือสิ่งที่ฉันจะสร้าง struct แล้วผ่านตัวชี้ไปที่ struct นี้เพื่อฟังก์ชั่น (วิธีการ) เป็นเจ้าของโครงสร้างนี้: struct foo { int x; }; struct foo* createFoo(); // mallocs foo void destroyFoo(struct foo* foo); // frees foo and its things นี่คือการปฏิบัติที่ไม่ดีหรือไม่? ฉันจะเรียนรู้วิธีการเขียน C ใน "วิธีการที่เหมาะสม" ได้อย่างไร
14 c 

5
พฤติกรรมที่ไม่ได้กำหนดใน Java
ฉันอ่านคำถามนี้เกี่ยวกับ SOที่กล่าวถึงพฤติกรรมที่ไม่ได้กำหนดทั่วไปใน C ++ และฉันสงสัยว่า: Java มีพฤติกรรมที่ไม่ได้กำหนดหรือไม่ หากเป็นเช่นนั้นแล้วสาเหตุทั่วไปของพฤติกรรมที่ไม่ได้กำหนดใน Java คืออะไร ถ้าไม่เช่นนั้นคุณสมบัติใดของ Java ที่ทำให้ปราศจากพฤติกรรมดังกล่าวและเพราะเหตุใด C และ C ++ รุ่นล่าสุดจึงไม่ถูกนำไปใช้กับคุณสมบัติเหล่านี้

4
มันเป็นการดีหรือไม่ที่จะแยกฟังก์ชั่นหลักออกจากไฟล์ของมัน?
เป็นการดีที่จะมีไฟล์ main.c ที่เพิ่งมีฟังก์ชั่นหลักอยู่หรือไม่และไม่มีฟังก์ชั่นอื่น ๆ เพื่อให้สามารถเชื่อมต่อฟังก์ชั่นอื่น ๆ ได้หรือไม่? หากไม่มีกฎที่ชัดเจนเมื่อใดที่ควรทำและไม่ควรทำเมื่อใด

4
การกำหนดความสำคัญมาก่อนในตัวชี้ C คืออะไร
ฉันเจอข้อความประกาศสองฉบับที่ฉันมีปัญหาในการทำความเข้าใจ ความเข้าใจของฉันเกี่ยวกับกฎสำคัญกว่ามีดังนี้: Operator Precedence Associativity (), [ ] 1 Left to Right *, identifier 2 Right to Left Data type 3 แต่แม้จะได้รับสิ่งนี้ฉันไม่สามารถหาวิธีประเมินตัวอย่างต่อไปนี้ได้อย่างถูกต้อง: ตัวอย่างแรก float * (* (*ptr)(int))(double **,char c) การประเมินของฉัน: *(ptr) (int) *(*ptr)(int) *(*(*ptr)(int)) จากนั้น double ** char c ตัวอย่างที่สอง unsigned **( * (*ptr) [5] ) (char const *,int *) …
14 c  pointers 

3
เหตุใดครอบครัว c จึงเป็นมาตรฐานการศึกษา CS สำหรับโปรแกรมคณิตศาสตร์ / CS แทนที่จะเป็นตระกูล LISP [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันทำความคุ้นเคยกับ LISP เพื่อการพัฒนาตนเอง หนึ่งในสิ่งที่ฉันสังเกตเห็นคือเสียงกระเพื่อมมากขึ้นในกระบวนทัศน์ของคณิตศาสตร์กว่าพูด C. โครงสร้างไวยากรณ์และการออกแบบดูเหมือนจะสะท้อนโดยตรงแบบจำลองทางคณิตศาสตร์จริงของอัลกอริทึม ฉันไม่เข้าใจว่าทำไมแม้แต่โปรแกรม CS ที่ดีทางคณิตศาสตร์ก็ยังเรียน C แทน LISP ฉันคิดว่า LISP ใช้แนวคิดทางคณิตศาสตร์ที่สูงกว่า C โดยตรงฉันไม่ได้บอกว่าคุณไม่สามารถสร้างแบบจำลองโครงสร้างทางคณิตศาสตร์ใน C. ฉันแค่สังเกตเห็นว่า LISP ดูเหมือนจะยากสำหรับนักคณิตศาสตร์ ฉันได้อ่านคำด่าของ Joel Spolsky หลายคนในโรงเรียน JAVA และสิ่งที่ไม่ - และฉันเห็นด้วยกับการประเมินของเขา - แต่โรงเรียนของฉันไม่ได้สอน JAVA ด้วยเหตุผลอย่างนั้น พวกเขาเข้มงวดในการสอนแนวคิดพื้นฐานเช่นพอยน์เตอร์การออกแบบอัลกอริทึมการเรียกซ้ำและแม้แต่คำแนะนำการประกอบ อย่างไรก็ตามพวกเขาทำสิ่งนี้ทั้งหมดใน C และ c ++ ไม่มีใครรู้เหตุผลของเรื่องนี้และ / หรือประวัติของมัน?

3
การนำอัลกอริธึมกระดาษมาใช้ใน C ++ หรือ MATLAB
ฉันเป็นปริญญาตรีวิศวกรรมไฟฟ้า ฉันได้อ่านเอกสารทางเทคนิคมากมายเกี่ยวกับอัลกอริธึมการประมวลผลสัญญาณและภาพ (การสร้างใหม่การแบ่งส่วนการกรอง ฯลฯ ) อัลกอริทึมส่วนใหญ่ที่แสดงในเอกสารเหล่านี้มีการกำหนดในช่วงเวลาต่อเนื่องและความถี่ต่อเนื่องและมักจะให้คำตอบในรูปของสมการที่ซับซ้อน คุณจะใช้กระดาษด้านเทคนิคตั้งแต่เริ่มต้นใน C ++ หรือ MATLAB เพื่อทำซ้ำผลลัพธ์ที่ได้ในกระดาษดังกล่าวอย่างไร โดยเฉพาะอย่างยิ่งฉันกำลังดูกระดาษ "อัลกอริทึมการฟื้นฟูลำแสงกรวยทั่วไป" โดย Wang et al ( IEEE Trans Med Imaging 1993; 12 (3): 486-96 ) และฉันสงสัยว่าฉันจะเริ่มอย่างไร ใช้อัลกอริทึมของพวกเขา สมการที่ 10 ให้สูตรของภาพที่สร้างขึ้นใหม่ที่ คุณจะเขียนโค้ดอย่างไร คุณจะมีการวนรอบสำหรับแต่ละ voxel และคำนวณสูตรที่สอดคล้องกันหรือไม่ คุณจะเขียนโค้ดฟังก์ชันของฟังก์ชันในสูตรนั้นได้อย่างไร คุณประเมินฟังก์ชั่น ณ จุดใด ๆ ฉันอ่านหนังสือ "การประมวลผลภาพดิจิทัล" โดย Gonzalez and Woods แต่ฉันยังคงเสีย ฉันได้อ่านเกี่ยวกับหนังสือชุดตัวเลขสูตรอาหารแล้ว …
14 c  algorithms  matlab 

8
เหตุใด C จึงครองตลาดซอฟต์แวร์ฝังตัว [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา เกือบทุกคนในตอนนี้จะกล่าวคำอวยพร: ประสิทธิภาพ ! โอเคCอนุญาตให้เขียนรหัสนักกีฬาได้ แต่มีภาษาอื่นที่สามารถทำได้หลังจากทั้งหมด! และพลังการปรับให้เหมาะสมที่สุดของคอมไพเลอร์สมัยใหม่นั้นยอดเยี่ยม ไม่Cมีข้อได้เปรียบบางอย่างที่ไม่มีภาษาอื่น ๆ ที่มี? หรือไม่จำเป็นต้องมีเครื่องมือที่มีความยืดหยุ่นมากขึ้นในโดเมน?

4
ทำไมเซิร์ฟเวอร์ Apache HTTP จึงซับซ้อน?
เซิร์ฟเวอร์ Apache HTTP เป็นโครงการที่ค่อนข้างใหญ่ - ใหญ่กว่าพูดlighthttpหรือnginxหรือแน่นอน "เซิร์ฟเวอร์ HTTP ธรรมดา" ที่คุณเห็นลอยอยู่ในบทช่วยสอน C / C ++ รหัสพิเศษสำหรับคืออะไร? มันเพิ่มความปลอดภัย / เสถียรภาพ (และถ้าเป็นเช่นนั้นได้อย่างไร) หรือเป็นเพียงการทำสิ่งต่าง ๆ เช่นการแยกconfไฟล์Apache / .htaccessพิมพ์สิ่งต่าง ๆ (และฉันเดาVirtualHostsฯลฯ ) ฉันขอไม่ให้วิจารณ์ Apache แต่เพราะฉันสนใจที่จะเขียนเว็บเซิร์ฟเวอร์แปลก ๆ และฉันอยากรู้สิ่งต่าง ๆ ที่ในขณะที่บางทีอาจไม่ชัดเจนว่าเป็นสิ่งสำคัญที่ต้องจำไว้สำหรับเว็บเซิร์ฟเวอร์ที่ปลอดภัยมั่นคงและรวดเร็ว
14 c  apache  http 

4
เทคนิค bit-wise ที่คุณชื่นชอบคืออะไร? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ไม่กี่วันที่ผ่านมาสมาชิกของ StackExchange Anto ได้สอบถามเกี่ยวกับการใช้งานที่ถูกต้องสำหรับตัวดำเนินการบิตที่ชาญฉลาด ฉันระบุว่าการขยับเร็วกว่าการคูณและหารจำนวนเต็มด้วยพลังของสอง Daemin สมาชิก StackExchange โต้กลับโดยระบุว่าการเปลี่ยนทางขวานำเสนอปัญหาด้วยจำนวนลบ ณ จุดนี้ฉันไม่เคยคิดที่จะใช้ตัวดำเนินการ shift กับจำนวนเต็มที่ลงนามแล้ว ฉันใช้เทคนิคนี้เป็นหลักในการพัฒนาซอฟต์แวร์ระดับต่ำ ดังนั้นฉันมักจะใช้จำนวนเต็มไม่ได้ลงนาม C ดำเนินการทางตรรกะกับจำนวนเต็มที่ไม่ได้ลงนาม ไม่มีการจ่ายความสนใจให้กับบิตลงชื่อเมื่อดำเนินการเลื่อนตรรกะอย่างถูกต้อง บิตที่ว่างจะถูกเติมด้วยค่าศูนย์ อย่างไรก็ตาม C ดำเนินการกะการคำนวณทางคณิตศาสตร์เมื่อเลื่อนจำนวนเต็มทางขวาที่ลงนาม บิตที่ว่างจะถูกเติมด้วยบิตเครื่องหมาย ความแตกต่างนี้ทำให้ค่าลบถูกปัดเศษเป็นอนันต์แทนที่จะถูกปัดเศษเป็นศูนย์ซึ่งเป็นพฤติกรรมที่แตกต่างจากการหารจำนวนเต็มที่ลงนามแล้ว ความคิดเพียงไม่กี่นาทีส่งผลให้เกิดโซลูชั่นอันดับหนึ่ง วิธีการแก้ปัญหาแปลงค่าลบให้เป็นค่าบวกก่อนที่จะขยับ ค่าจะถูกแปลงแบบมีเงื่อนไขกลับสู่รูปแบบลบหลังจากดำเนินการกะแล้ว int a = -5; int n = 1; int negative = …

1
ข้อกำหนดขั้นต่ำสุดและขั้นต่ำสำหรับการบรรจุชุดอักขระ SE Asian สำหรับโครงการระบบฝังตัวคืออะไร
ฉันทำงานให้กับ บริษัท ที่เริ่มรวมระบบคอมพิวเตอร์ฝังตัวเข้ากับผลิตภัณฑ์ของเราที่เราผลิต เรามีผลิตภัณฑ์ที่หลากหลายและกระจายอยู่ทั่วโลก นอกจากนี้เราได้ออกแบบบอร์ดรวมสองสามตัวที่สามารถให้บริการได้หลายวัตถุประสงค์ขึ้นอยู่กับเฟิร์มแวร์ที่ได้รับการกระพริบไปยังระบบ วิธีนี้เราไม่ต้องออกแบบฮาร์ดแวร์คอมพิวเตอร์สำหรับผลิตภัณฑ์ต่าง ๆ ของเรา - สิ่งที่เราต้องทำคือเขียนเลเยอร์เฟิร์มแวร์อีกครั้งเพื่อตอบสนองความต้องการของผลิตภัณฑ์เฉพาะ เนื่องจากข้อ จำกัด ของฮาร์ดแวร์เหล่านี้การเปลี่ยนฮาร์ดแวร์ของเราทำให้การมีเพศสัมพันธ์ แต่การเขียนซอฟต์แวร์ใหม่นั้นง่ายกว่ามาก หนึ่งในผลิตภัณฑ์ของเรามีข้อกำหนดใหม่ที่เราไม่เคยใช้มาก่อนซึ่งเป็นความต้องการของข้อความที่ผู้ใช้ป้อน ขณะนี้เราสามารถจัดเก็บข้อความสากลในแหล่งข้อมูลและมีเพียงตัวอักษรที่จำเป็นเท่านั้นที่ถูกรวบรวมเป็นภาพบิตแมป ซึ่งหมายความว่าเราสามารถจัดเก็บภาษาที่มีอุดมการณ์สูงเช่นข้อความภาษาจีนและญี่ปุ่นในพื้นที่ที่น้อยที่สุดเพราะเราใช้ชุดภาษาทั้งหมดเพียงเล็กน้อยเท่านั้น เนื่องจากผลิตภัณฑ์ใหม่นี้ต้องการให้ผู้ใช้ป้อนข้อความเราจึงต้องใช้ชุดอักขระที่ครอบคลุม ในฐานะนักพัฒนาพีซีฉันคุ้นเคยกับ ASCII, Unicode, UTF-8 และอื่น ๆ อย่างไรก็ตามการใช้ชุดอักขระเต็มรูปแบบของภาษาเหล่านี้ไม่สามารถทำได้เพราะเรามี FRAM จำนวน จำกัด บนกระดาน เพื่อจัดเก็บข้อมูลตัวอักษร ผู้บริหารของฉันหวังว่าจะมีชุดอักขระน้อยที่สุดที่สามารถใช้สำหรับภาษาที่มีอุดมการณ์สูง ฉันเชื่อว่ามีสัทอักษรสำหรับภาษาญี่ปุ่น (ฮิรางานะ) มีตัวอักษรสัทอักษรที่คล้ายคลึงกันสำหรับภาษาจีนเกาหลีเวียดนามและอื่น ๆ เช่นกันและถ้าเป็นเช่นนั้นผู้พูดภาษาเหล่านี้สามารถสื่อสารกับชุดอักขระที่แคบได้หรือไม่ ฉันค่อนข้างมั่นใจว่าคำตอบสำหรับคำถามนั้นคือ "ไม่แน่นอน" แต่เป็นคำถามที่น่าถาม ฝ่ายบริหารได้กำหนดข้อกำหนด "อ่อน" ที่เราสามารถมีชุดอักขระที่ จำกัด เพียงประมาณ 8,000 ตัวครอบคลุมภาษาที่สำคัญทั้งหมดในการใช้งานทั่วไป หากสิ่งนี้เป็นไปไม่ได้เราต้องหาวิธีการทางเลือกบางรูปแบบเพื่อตอบสนองความต้องการของเราโดยใช้ทรัพยากรฮาร์ดแวร์ที่มีอยู่อย่าง จำกัด ของเรา ฉันแน่ใจว่าปัญหานี้จะต้องได้รับการแก้ไขก่อน …

3
การใช้มาโคร C / C ++ เป็นทางลัดสำหรับการคอมไพล์แบบมีเงื่อนไขหรือไม่?
สมมติว่าฉันต้องการมีข้อความเอาต์พุตหลายประเภทในรหัสของฉัน หนึ่งในนั้นคือDEBUGซึ่งจะถูกพิมพ์เท่านั้นเมื่อรวบรวมรหัสในโหมด Debug โดยปกติฉันจะต้องเขียนบางอย่างเช่น #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif ซึ่งค่อนข้างยุ่งยากและน่ารำคาญในหลาย ๆ ที่ เป็นวิธีปฏิบัติที่ดีในการกำหนดแมโครสำหรับข้อมูลโค้ดดังนั้นคุณจะใช้วิธีนี้หรือไม่ MSG_DEBUG("Debug message") หรือมีวิธีอื่นที่สวยงามกว่าวิธีจัดการกับมันโดยไม่มีมาโคร ฉันสนใจโซลูชันที่เป็นไปได้ทั้งใน C และ C ++ เนื่องจากฉันใช้ทั้งสองภาษาในโครงการที่แตกต่างกัน
13 c++  c  macros 

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