ส่วนของเว็บไซต์
ตัวเลือกของบรรณาธิการ:
- การสร้างทางลัดบนเดสก์ท็อปสำหรับเพื่อนร่วมชั้น
- หากรองเท้าไม่พอดีกับ Aliexpress: การกระทำที่ถูกต้องในกรณีนี้ ผลิตภัณฑ์ Aliexpress มีขนาดที่เหมาะสม
- ข้อพิพาทใน AliExpress เข้าร่วมข้อพิพาทใน AliExpress
- 3 ฐานข้อมูลแบบกระจาย
- ผู้จัดการเนื้อหา - ความรับผิดชอบ เงินเดือน การฝึกอบรม ข้อเสียและข้อดีของการทำงานเป็นผู้เชี่ยวชาญด้านเนื้อหา
- จะป้องกันตัวเองจากการขุดที่ซ่อนอยู่ในเบราว์เซอร์ของคุณได้อย่างไร?
- การกู้คืนรหัสผ่านใน Ask
- วิธีเปิดกล้องบนแล็ปท็อป
- ทำไมเพลงไม่เล่นบน VKontakte?
- วิธีเพิ่มขนาดของไดรฟ์ C โดยเสียค่าใช้จ่ายของไดรฟ์ D โดยไม่สูญเสียข้อมูล
การโฆษณา
สิ่งที่ควรอยู่ใน c-file และสิ่งที่ควรอยู่ใน h-file? ออนไลน์รวมไฟล์ต้นฉบับ C หนึ่งไฟล์ไว้ในไฟล์อื่นด้วยหรือไม่ การแบ่งข้อความโปรแกรมออกเป็นโมดูล |
ใช้อย่างถูกต้องนี่อาจเป็นวิธีที่มีประโยชน์ สมมติว่าคุณมีระบบย่อยที่มีความสำคัญต่อภารกิจที่ซับซ้อนซึ่งมีอินเทอร์เฟซสาธารณะที่ค่อนข้างเล็กและมีโค้ดการใช้งานจำนวนมากที่ยังไม่ได้ใช้งาน โค้ดมีความยาวหลายพันบรรทัด มีฟังก์ชันส่วนตัวนับร้อยและมีข้อมูลส่วนตัวไม่น้อย หากคุณทำงานกับระบบฝังตัวที่ไม่สำคัญ คุณอาจพบสถานการณ์นี้ค่อนข้างบ่อย โซลูชันของคุณมีแนวโน้มที่จะแบ่งชั้น เป็นโมดูล และแยกส่วน และประเด็นเหล่านี้สามารถนำเสนอและปรับปรุงได้อย่างสะดวกโดยการเขียนโค้ดส่วนต่างๆ ของระบบย่อยในไฟล์ต่างๆ ด้วย C คุณจะสูญเสียอะไรมากมายจากการทำเช่นนี้ เครื่องมือเกือบทั้งหมดมีการปรับปรุงที่เหมาะสมสำหรับหน่วยการคอมไพล์เดียว แต่กลับมองโลกในแง่ร้ายมากเกี่ยวกับสิ่งใดก็ตามที่ประกาศจากภายนอก หากคุณรวมทุกอย่างไว้ในโมดูลซอร์ส C เดียวคุณจะได้รับ - การปรับปรุงประสิทธิภาพและขนาดโค้ด - การเรียกใช้ฟังก์ชันจะอยู่ในบรรทัดในหลายกรณี แม้ว่าจะไม่มีอินเลย์ แต่คอมไพลเลอร์ก็สามารถสร้างโค้ดที่มีประสิทธิภาพมากขึ้นได้ ข้อมูลระดับช่องและฟังก์ชั่นถูกซ่อนอยู่ หลีกเลี่ยงมลภาวะเนมสเปซและผลที่ตามมา - คุณสามารถใช้ชื่อที่ยุ่งยากน้อยลงได้ การรวบรวมและการสื่อสารที่รวดเร็วยิ่งขึ้น แต่คุณก็จบลงด้วยความยุ่งเหยิงที่ไม่ศักดิ์สิทธิ์เมื่อต้องแก้ไขไฟล์นี้ และคุณจะสูญเสียความเป็นโมดูลโดยนัย สามารถแก้ไขได้ด้วยการแบ่งซอร์สโค้ดออกเป็นหลายไฟล์และรวมไว้ในหน่วยการคอมไพล์เดียว อย่างไรก็ตาม คุณต้องกำหนดแบบแผนบางประการเพื่อจัดการกับเรื่องนี้ สิ่งนี้จะขึ้นอยู่กับ toolchain ของคุณในระดับหนึ่ง แต่มีคำแนะนำทั่วไปบางประการ วางอินเทอร์เฟซสาธารณะไว้ในไฟล์ส่วนหัวแยกต่างหาก - คุณยังควรทำสิ่งนี้อยู่ มีไฟล์ .c หลักหนึ่งไฟล์ที่รวมไฟล์ .c ลูกทั้งหมด ซึ่งอาจรวมถึงโค้ดสำหรับอินเทอร์เฟซแบบเปิดด้วย ใช้ตัวป้องกันคอมไพเลอร์เพื่อป้องกันไม่ให้ส่วนหัวส่วนตัวและโมดูลต้นทางถูกรวมไว้ในโมดูลการคอมไพล์ภายนอก ข้อมูลส่วนบุคคลและฟังก์ชันทั้งหมดจะต้องประกาศให้เป็นแบบคงที่ รักษาความแตกต่างทางแนวคิดระหว่างไฟล์ .c และ .h สิ่งนี้ใช้แบบแผนที่มีอยู่ ความแตกต่างก็คือ คุณจะมีโฆษณาคงที่จำนวนมากในส่วนหัวของคุณ หาก toolchain ของคุณไม่ได้กำหนดสิ่งใด คุณไม่ควรระบุไฟล์การใช้งานส่วนตัว เช่น .c และ .h หากคุณใช้ยามที่เปิดใช้งาน พวกเขาจะไม่สร้างโค้ดและจะไม่แนะนำชื่อใหม่ใด ๆ (คุณอาจจบลงด้วยส่วนที่ว่างเปล่าบางส่วน) ข้อดีอย่างมากคือเครื่องมืออื่นๆ (เช่น IDE) จะจัดการไฟล์เหล่านี้ตามนั้น นามสกุลไฟล์ไม่สำคัญสำหรับคอมไพเลอร์ภาษา C ส่วนใหญ่ ดังนั้นจึงใช้ได้ อย่างไรก็ตาม ขึ้นอยู่กับไฟล์หรือการตั้งค่าโปรเจ็กต์ของคุณ ไฟล์ c ที่รวมไว้อาจสร้างไฟล์อ็อบเจ็กต์แยกต่างหาก เมื่อเชื่อมโยงแล้ว อาจทำให้มีอักขระที่กำหนดซ้ำซ้อนได้ ภาษา C ไม่ได้ห้าม #include ประเภทนี้ แต่หน่วยการแปลผลลัพธ์จะต้องยังคงเป็น C ที่ถูกต้อง ฉันไม่รู้ว่าคุณใช้โปรแกรมอะไรกับไฟล์ .prj หากคุณใช้บางอย่างเช่น "make" หรือ Visual Studio หรืออะไรก็ตาม เพียงตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าเป็นรายการไฟล์ที่ต้องคอมไพล์ โดยไม่มีไฟล์ที่ไม่สามารถคอมไพล์แยกกันได้ คุณสามารถรวมไฟล์ .C หรือ .CPP ในไฟล์ต้นฉบับอื่นๆ ได้อย่างถูกต้อง ขึ้นอยู่กับ IDE ของคุณ โดยปกติคุณสามารถป้องกันการลิงก์ซ้ำได้โดยการดูคุณสมบัติของไฟล์ต้นฉบับที่คุณต้องการรวม โดยทั่วไปโดยการคลิกขวาที่ไฟล์เหล่านั้นและคลิกที่คุณสมบัติ และยกเลิกการเลือก /ตรวจสอบการคอมไพล์/ลิงก์/ยกเว้นจากบิลด์หรืออื่น ๆ ตัวเลือก . อาจจะ. หรือคุณไม่สามารถรวมไฟล์ไว้ในโปรเจ็กต์ได้ ดังนั้น IDE จึงไม่รู้ด้วยซ้ำว่ามีไฟล์อยู่และจะไม่พยายามคอมไพล์มัน และด้วย makefiles คุณเพียงแค่ไม่ต้องใส่ไฟล์ลงไปเพื่อคอมไพล์และลิงก์ แก้ไข: ขออภัย ฉันให้คำตอบแทนที่จะตอบคำตอบอื่น :( การรวมไฟล์ C ไว้ในไฟล์อื่นนั้นถูกกฎหมาย แต่ไม่แนะนำ เว้นแต่คุณจะทราบแน่ชัดว่าทำไมคุณถึงทำมันและสิ่งที่คุณพยายามทำให้สำเร็จ ยังไงซะ ฉันพลาดส่วนที่สองของคำถามไป หากไฟล์ C รวมอยู่ในไฟล์อื่นและในเวลาเดียวกันก็รวมอยู่ในโปรเจ็กต์ คุณอาจประสบปัญหาเกี่ยวกับสัญลักษณ์ที่ซ้ำกัน สาเหตุที่ลิงก์อ็อบเจ็กต์ เช่น ฟังก์ชันเดียวกันจะถูกกำหนดสองครั้ง (เว้นแต่ว่าไฟล์เหล่านั้นจะเป็นแบบคงที่) ขึ้นอยู่กับสภาพแวดล้อมการสร้างของคุณ (คุณจะไม่ระบุ) คุณอาจพบว่ามันทำงานตามที่คุณต้องการ อย่างไรก็ตาม มีสภาพแวดล้อมมากมาย (ทั้ง IDE และ Makefile ที่ทำด้วยมือจำนวนมาก) ที่คาดหวังว่า *.c จะต้องถูกคอมไพล์ - หากสิ่งนี้เกิดขึ้น คุณจะพบข้อผิดพลาดของตัวเชื่อมโยงเนื่องจากสัญลักษณ์ที่ซ้ำกัน โดยทั่วไปควรหลีกเลี่ยงการปฏิบัตินี้ หากคุณต้อง # รวมแหล่งที่มา (และโดยทั่วไปควรหลีกเลี่ยง) ให้ใช้ไฟล์อื่นสำหรับไฟล์นั้น นี่สบายดีใช่ไหม? ใช่ มันจะรวบรวม นี่แนะนำเหรอ? ไฟล์ no - .c จะถูกคอมไพล์เป็นไฟล์ .obj ซึ่งเชื่อมโยงหลังจากการคอมไพล์ (โดยตัวเชื่อมโยง) ไปยังไฟล์ปฏิบัติการ (หรือไลบรารี) ดังนั้นจึงไม่จำเป็นต้องรวมไฟล์ .c หนึ่งไฟล์ไว้ในอีกไฟล์หนึ่ง คุณมักจะต้องการสร้างไฟล์ .h ที่แสดงรายการฟังก์ชัน/ตัวแปรที่มีอยู่ในไฟล์ .c อื่น และรวมไฟล์ .h ไว้ด้วย คุณสามารถใช้คอมไพเลอร์ gcc บน linux เพื่อลิงก์สองไฟล์กับเอาต์พุตเดียว สมมติว่าคุณมีไฟล์ c สองไฟล์ ไฟล์หนึ่งคือ "main.c" และอีกไฟล์คือ "support.c" ดังนั้นคำสั่งให้เชื่อมต่อสองตัวนี้ก็คือ Gcc main.c support.c -o main.out สองไฟล์นี้จะเชื่อมโยงกับ main.out หนึ่งไฟล์ ในการรันเอาต์พุตคำสั่งจะเป็น ./main.out หากคุณใช้ฟังก์ชัน main.c ซึ่งได้รับการประกาศในไฟล์ support.c คุณควรประกาศฟังก์ชันดังกล่าวใน main และใช้คลาสพื้นที่เก็บข้อมูลภายนอกด้วย ไฟล์ต้นฉบับ ข้อความของโปรแกรม C สามารถแบ่งออกเป็นไฟล์ต้นฉบับได้หลายไฟล์ ไฟล์ต้นฉบับเป็นไฟล์ข้อความที่มีทั้งโปรแกรมหรือบางส่วน เมื่อโปรแกรมต้นฉบับถูกคอมไพล์ ไฟล์ต้นฉบับแต่ละไฟล์จะต้องถูกรวบรวมแยกกัน จากนั้นลิงก์ไปยังไฟล์อื่น ๆ โดยตัวเชื่อมโยง ไฟล์ต้นฉบับแต่ละไฟล์สามารถรวมกันเป็นไฟล์ต้นฉบับเดียว โดยคอมไพล์โดยรวมโดยใช้คำสั่งตัวประมวลผลล่วงหน้า #รวม. ไฟล์ต้นฉบับสามารถประกอบด้วยคำสั่ง คำแนะนำคอมไพลเลอร์ การประกาศ และคำจำกัดความผสมกัน ความสมบูรณ์หมายความว่าออบเจ็กต์ เช่น คำจำกัดความของฟังก์ชัน โครงสร้างข้อมูล หรือชุดของคำสั่งการคอมไพล์แบบมีเงื่อนไขที่เกี่ยวข้องจะต้องอยู่ในไฟล์เดียว กล่าวคือ ไม่สามารถเริ่มต้นในไฟล์เดียวและดำเนินการต่อในอีกไฟล์หนึ่งได้ ไฟล์ต้นฉบับไม่จำเป็นต้องมีคำสั่งปฏิบัติการ บางครั้งการวางคำจำกัดความของตัวแปรไว้ในไฟล์เดียวก็สะดวก และในไฟล์อื่นๆ ให้ใช้ตัวแปรเหล่านี้โดยการประกาศตัวแปรเหล่านั้น ในกรณีนี้ คำจำกัดความของตัวแปรจะสามารถค้นหาและแก้ไขได้ง่าย ด้วยเหตุผลเดียวกัน ค่าคงที่ที่มีชื่อและคำจำกัดความของแมโครมักจะถูกรวบรวมเป็นไฟล์แยกกันและรวมผ่านคำสั่งตัวประมวลผลล่วงหน้า #รวมลงในไฟล์ต้นฉบับที่ต้องการ คำแนะนำสำหรับคอมไพลเลอร์มักจะใช้กับส่วนเฉพาะของไฟล์ต้นฉบับเท่านั้น การดำเนินการของคอมไพเลอร์เฉพาะที่ระบุโดยคำแนะนำนั้นถูกกำหนดโดยการใช้งานเฉพาะของคอมไพเลอร์ C ในตัวอย่างต่อไปนี้ โปรแกรมต้นฉบับประกอบด้วยไฟล์ต้นฉบับสองไฟล์ ฟังก์ชั่น หลักและ สูงสุดนำเสนอเป็นไฟล์แยกกัน การทำงาน หลักใช้ฟังก์ชัน สูงสุดในกระบวนการดำเนินการ /* ไฟล์ต้นฉบับ 1 - ฟังก์ชั่นหลัก */ ภายนอก int max(int, int); /* ประกาศฟังก์ชัน */ main() /* นิยามฟังก์ชัน */ int w = หนึ่ง, x = สอง, y = สาม; /* ไฟล์ต้นฉบับ 2 - ฟังก์ชั่นสูงสุด */ int max (a, b) /* นิยามฟังก์ชัน */ ในไฟล์ต้นฉบับแรกฟังก์ชัน สูงสุดประกาศแต่ไม่ได้กำหนดไว้ การประกาศฟังก์ชันนี้เรียกว่าการประกาศล่วงหน้า ช่วยให้คอมไพลเลอร์ควบคุมการเรียกฟังก์ชันก่อนที่จะถูกกำหนด นิยามฟังก์ชัน หลักมีการเรียกใช้ฟังก์ชัน สูงสุด. บรรทัดที่ขึ้นต้นด้วยสัญลักษณ์ # คือคำสั่งของตัวประมวลผลล่วงหน้า คำสั่งระบุให้ผู้ประมวลผลล่วงหน้าทราบถึงความจำเป็นในการแทนที่ตัวระบุ ONE, TWO, THREE ด้วยค่าที่สอดคล้องกันในไฟล์ต้นฉบับแรก ขอบเขตของคำสั่งไม่ขยายไปยังไฟล์ต้นฉบับที่สอง การเขียนโปรแกรม Kozlova Irina Sergeevna 27. ไฟล์ต้นฉบับ C++27. ไฟล์ต้นฉบับ C++ โปรแกรม C++ มักจะมีไฟล์ต้นฉบับจำนวนมาก ซึ่งแต่ละไฟล์จะมีคำอธิบายประเภท ฟังก์ชัน ตัวแปร และค่าคงที่ เพื่อให้ชื่อถูกใช้ในไฟล์ต้นฉบับที่แตกต่างกันเพื่ออ้างถึงอ็อบเจ็กต์เฉพาะ จะต้องประกาศชื่อนั้นเป็นภายนอก ตัวอย่างเช่น: sqrt คู่ภายนอก (สองเท่า); cin กระแสภายนอก วิธีที่ง่ายที่สุดในการตรวจสอบความสอดคล้องระหว่างไฟล์ต้นฉบับคือการวางคำอธิบายเดียวกันในไฟล์แยกกัน ซึ่งเรียกว่าไฟล์ส่วนหัว จากนั้นจึงรวมซึ่งก็คือ คัดลอก ไฟล์ส่วนหัวเหล่านี้ในไฟล์ทั้งหมดที่ต้องการคำอธิบายเหล่านี้ ตัวอย่างเช่น หากคำอธิบายของ sqrt อยู่ในไฟล์ส่วนหัวของฟังก์ชันทางคณิตศาสตร์มาตรฐาน math.h และคุณจำเป็นต้องแยกรากที่สองของ 4 คุณจะใช้โปรแกรม: เนื่องจากไฟล์ส่วนหัวปกติประกอบด้วยไฟล์ต้นฉบับจำนวนมาก จึงไม่มีคำอธิบายที่ไม่ควรทำซ้ำ ในคำสั่ง include ให้รวมชื่อไฟล์ที่ปรากฏในวงเล็บเหลี่ยม เช่น อ้างถึงไฟล์ที่มีชื่อนั้นในไดเร็กทอรีมาตรฐาน (โดยปกติคือ /usr/include/CC) ไฟล์ที่เก็บไว้ในตำแหน่งอื่นมีการอ้างอิงโดยใช้ชื่อที่อยู่ในเครื่องหมายคำพูดคู่ ตัวอย่างเช่น: #รวม "math1.h" #รวม "/usr/bs/math2.h" จะรวม math1.h จากไดเร็กทอรีผู้ใช้ปัจจุบัน และ math2.h จากไดเร็กทอรี /usr/bs มาดูกันว่าเราจะกำหนด ostream ประเภทสตรีมเอาต์พุตได้อย่างไร เพื่อให้ปัญหาง่ายขึ้น สมมติว่าประเภทบัฟเฟอร์คือ streambuf ประเภท streambuf ถูกกำหนดไว้ในตำแหน่งเดียวกับคำจำกัดความที่แท้จริงของ ostream ค่าของประเภทที่ผู้ใช้กำหนดจะระบุข้อมูลที่จำเป็นในการแสดงออบเจ็กต์ประเภทนั้นและการดำเนินการจำนวนมากเพื่อดำเนินการกับออบเจ็กต์เหล่านั้น คำจำกัดความประกอบด้วยสองส่วน: ส่วนปิด (ส่วนตัว) ซึ่งมีข้อมูลที่นักพัฒนาใช้เท่านั้น และส่วนเปิด (สาธารณะ) ซึ่งเป็นส่วนต่อประสานของประเภทกับผู้ใช้ จากหนังสือโปรแกรมและไฟล์ Windows ผู้เขียน คลิมอฟ เอไฟล์ DBX ไฟล์ที่มีส่วนขยาย DBX เก็บบันทึก Outlook Express ไฟล์เหล่านี้เรียกว่า Message Bank ประกอบด้วยตัวอักษร ข้อความกลุ่มข่าวสาร ฯลฯ หากต้องการ คุณสามารถคัดลอกไฟล์เหล่านี้ไปยังสื่อบันทึกข้อมูลเพื่อถ่ายโอนข้อมูลไปยังคอมพิวเตอร์เครื่องอื่นได้ จากหนังสือการเขียนโปรแกรม ผู้เขียน คอซโลวา อิรินา เซอร์เกฟนาไฟล์ INF ในบทความนี้เราจะดูว่าไฟล์ INF คืออะไร วิธีใช้งานไฟล์ดังกล่าวเพื่อทำงานกับไฟล์อื่นๆ และรีจิสทรี สร้างทางลัด เปิดโปรแกรม ฯลฯ ดังที่คุณทราบ ผลิตภัณฑ์ซอฟต์แวร์ที่จริงจังไม่มากก็น้อยมักจะต้องมี พิเศษ จากหนังสือ Win2K FAQ (v. 6.0) ผู้เขียน Shashkov Alexey12. ความคิดเห็น ไฟล์ต้นฉบับ ความคิดเห็นคือชุดของอักขระที่คอมไพเลอร์ละเว้น แต่มีข้อ จำกัด บางประการกับอักขระชุดนี้ ภายในชุดอักขระที่แสดงความคิดเห็นจะต้องไม่มีอักขระพิเศษดังกล่าว จากหนังสือ Microsoft Visual C++ และ MFC การเขียนโปรแกรมสำหรับ Windows 95 และ Windows NT ผู้เขียน โฟรลอฟ อเล็กซานเดอร์ เวียเชสลาโววิช27. ไฟล์ต้นฉบับ C++ โปรแกรม C++ มักจะมีไฟล์ต้นฉบับจำนวนมาก ซึ่งแต่ละไฟล์จะมีคำอธิบายประเภท ฟังก์ชัน ตัวแปร และค่าคงที่ เพื่อให้แน่ใจว่าชื่อสามารถนำไปใช้ในไฟล์ต้นฉบับต่าง ๆ เพื่ออ้างอิงถึงวัตถุเฉพาะได้ จากหนังสือ UNIX: การสื่อสารกระบวนการ ผู้เขียน สตีเฟนส์ วิลเลียม ริชาร์ดไฟล์ ตามความต้องการยอดนิยม เรากำลังเปิดส่วนที่มีไฟล์ที่มีประโยชน์สำหรับ W2k ส่วนนี้ประกอบด้วยสองส่วน ส่วนแรกคือแพตช์อย่างเป็นทางการจาก Microsoft (ไม่ใช่ทั้งหมด แต่เฉพาะส่วนที่คิดว่าสำคัญที่สุดสำหรับเรา) และส่วนที่สองซึ่งจะรวมไฟล์ทั้งหมดที่กล่าวถึงในคำถามที่พบบ่อย เพียงยูทิลิตี้ จากหนังสือภาษาซีสำหรับคอมพิวเตอร์ส่วนบุคคล ผู้เขียน โบชคอฟ เอส.โอ. จากหนังสือ KOMPAS-3D สำหรับนักเรียนและเด็กนักเรียน การวาดภาพ วิทยาการคอมพิวเตอร์ เรขาคณิต ผู้เขียน โบลชาคอฟ วลาดิมีร์ จากหนังสือ Undocumented and Little-Known Features of Windows XP ผู้เขียน คลีเมนโก โรมัน อเล็กซานโดรวิชไฟล์ต้นฉบับ ข้อความของโปรแกรม C สามารถแบ่งออกเป็นไฟล์ต้นฉบับหลายไฟล์ ไฟล์ต้นฉบับเป็นไฟล์ข้อความที่มีทั้งโปรแกรมหรือบางส่วน เมื่อโปรแกรมต้นฉบับถูกคอมไพล์ ไฟล์ต้นฉบับแต่ละไฟล์ที่เป็นส่วนประกอบ จากหนังสือการเขียนโปรแกรมสำหรับ Linux แนวทางแบบมืออาชีพ โดย มิทเชลล์ มาร์กภาคผนวก 2 ข้อมูลเริ่มต้นสำหรับการสร้างแบบจำลองแบบทึบ จากหนังสือ UNIX: การพัฒนาแอปพลิเคชันเครือข่าย ผู้เขียน สตีเฟนส์ วิลเลียม ริชาร์ดภาคผนวก 3 ข้อมูลเบื้องต้นสำหรับตระกูลการสร้างแบบจำลอง จากหนังสือ Wiki-Government [เทคโนโลยีสามารถทำให้รัฐบาลดีขึ้นได้อย่างไร ประชาธิปไตยแข็งแกร่งขึ้น และพลเมืองมีอิทธิพลมากขึ้น] โดย Novek Bethไฟล์ CPL จากสองสามย่อหน้าก่อนหน้านี้ คุณได้เรียนรู้การคำนวณเชิงทฤษฎีเกือบทั้งหมดที่จำเป็นในการทำงานกับโปรแกรม rundll32.exe ตอนนี้เราจะแสดงรายการความสามารถที่โปรแกรมนี้สามารถมอบให้กับผู้ใช้ได้ เริ่มต้นด้วยคำอธิบาย จากหนังสือ UNIX - สภาพแวดล้อมการเขียนโปรแกรมสากล โดย ไพค์ ร็อบ1.5.4. ซอร์สโค้ด Linux เป็นระบบโอเพ่นซอร์สใช่ไหม ผู้ตัดสินขั้นสุดท้ายว่าระบบทำงานอย่างไรคือซอร์สโค้ดของระบบเอง โชคดีสำหรับเราที่มันใช้งานได้ฟรี การกระจาย Linux ที่มีอยู่อาจมีซอร์สโค้ดสำหรับทั้งระบบและทั้งหมด จากหนังสือของผู้เขียนก.3.5. ข้อความต้นฉบับของโปรแกรมเครื่องคิดเลข Listing A.3 แสดงข้อความของโปรแกรมที่คำนวณค่าของนิพจน์ postfix รายการ A.3 (calculator.c) ส่วนหลักของโปรแกรมเครื่องคิดเลข/* การคำนวณในรูปแบบเอกนารี *//* รหัสบรรทัดเดียวจะถูกส่งไปยังอินพุตโปรแกรม จากหนังสือของผู้เขียนภาคผนวก D ซอร์สโค้ดต่างๆ D.1 ไฟล์ส่วนหัวของ unp.h เกือบทุกโปรแกรมในหนังสือเล่มนี้เริ่มต้นด้วยการรวมไฟล์ส่วนหัวของ unp.h ดังแสดงในรายการ D.1 ไฟล์นี้ประกอบด้วยไฟล์ส่วนหัวของระบบมาตรฐานทั้งหมดที่จำเป็นสำหรับการดำเนินการ จากหนังสือของผู้เขียน จากหนังสือของผู้เขียนภาคผนวก 3 ซอร์สโค้ดสำหรับเครื่องคิดเลขเฉพาะกิจ ไฟล์เหล่านี้มีโค้ดทั้งหมดจาก "The Unix Programming Environment" โดย Brian Kernighan และ Rob Pike (Prentice Hall, 1984, ISBN 0-13-937681-X) การแจกจ่าย hoc6 ที่แยกต่างหากประกอบด้วยการแก้ไขใดๆ ที่เรานำไปใช้กับสิ่งนั้น เวอร์ชันในไฟล์นี้มาจากหนังสือ ลิขสิทธิ์ © Lucent Technologies, 1997 สงวนลิขสิทธิ์ อนุญาตให้ใช้ คัดลอก แก้ไข และแจกจ่ายซอฟต์แวร์นี้และเอกสารประกอบสำหรับ สนับสนุน.microsoft เมื่อคุณปรับเปลี่ยนแฟ้มต้นฉบับใน Visual C++ และบันทึก บรรทัดจะต้องลงท้ายด้วยชุด "CR/LF" [การขึ้นบรรทัดใหม่ การป้อนบรรทัด] บนระบบ UNIX บรรทัดจะลงท้ายด้วย "LF" ดังนั้น เมื่อดูไฟล์ที่ถูกแก้ไขในกลุ่ม Windows บนระบบ UNIX คุณอาจเห็นอักขระ "^M" จำนวนมากในบรรทัด สิ่งนี้จะเกิดขึ้นเฉพาะเมื่อคุณใช้โปรแกรมแก้ไขที่ไม่รู้วิธีตีความไฟล์ Windows Visual C++ สามารถเปิดไฟล์ที่มีบรรทัดลงท้ายด้วยการสร้าง UNIX LF หากคุณแก้ไขไฟล์นี้และบันทึกจาก Visual C++ ไฟล์นั้นจะถูกบันทึกในรูปแบบ Windows (คุณจะเห็น CR/LF ไม่ใช่ LF ที่เคยอยู่ในระบบ) บทความนี้อธิบายขั้นตอนในการบันทึกไฟล์ที่ถูกแก้ไขที่สร้างขึ้นบนแพลตฟอร์ม Windows ในรูปแบบที่สามารถใช้ได้กับระบบ UNIX บันทึก: Visual C++.NET IDE มีฟังก์ชันสำหรับบันทึกไฟล์ในรูปแบบ UNIX ใน IDE ให้บันทึกไฟล์โดยใช้ บันทึกเป็น...ให้เลือกบันทึกจากรายการแบบเลื่อนลง บันทึกด้วยการเข้ารหัส...แล้วกดปุ่มthrn ใช่- เลือกการเข้ารหัสสตริงจากรายการแบบเลื่อนลง ยูนิกซ์ (LF)แล้วคลิกปุ่ม ตกลง. คุณสามารถใช้ขั้นตอนต่อไปนี้เพื่อสร้างโครงการแอปพลิเคชันคอนโซล Win32 ที่แปลงไฟล์ที่มี "CR/LF" เพื่อสิ้นสุดบรรทัดสำหรับ "LF":
คุณอาจต้องทดสอบไฟล์ exe นี้เพื่อดูว่าไฟล์ทำงานถูกต้องหรือไม่ เมื่อต้องการทำเช่นนี้ ให้เปิดแฟ้มในตัวแก้ไขไบนารีของ Visual C++ เมื่อคุณเลือก เปิดในกลุ่ม ไฟล์เมนูโดยเลือก DOS2UNIX.ex การตั้งค่า เปิดเป็นถึงใคร ไบนารี่แล้วคลิก เปิด- ตัวอย่างเช่น หากไฟล์มี "hellocrlfworld" ข้อมูลไฟล์ไบนารี (เลขฐานสิบหก) จะมีลักษณะดังนี้: 48 65 6 ค 6 ค 6F 0 ง 0A 57 6F 72 6 ค 64 นี่เทียบเท่ากับ: สวัสดี ที่พรอมต์คำสั่ง ให้เรียกใช้ dos2unix.exe สามารถใช้ร่วมกับ Visual C++ Automation Model เพื่อทำให้กระบวนการทั้งหมดเป็นแบบอัตโนมัติ คุณสามารถเขียนสคริปต์แมโคร Microsoft Visual Basic แบบธรรมดาเพื่อเรียกใช้เครื่องมือนี้ได้ แต่ต้องเพิ่มเครื่องมือก่อน บริการเมนูมีลักษณะดังนี้:
หากต้องการตรวจสอบการทำงานของโปรแกรม ให้เปิดไฟล์ในตัวแก้ไข Visual C++ จากนั้นเปิดไฟล์ บริการเมนูเริ่ม ดอสทูยูนิกซ์วิธี. คุณจะเห็นว่าไฟล์ที่เปิดในตัวแก้ไขได้ลบอักขระ CR ทั้งหมดออกแล้ว หากคุณต้องการทำให้กระบวนการนี้เป็นแบบอัตโนมัติ ให้จัดการเพื่อให้ทุกครั้งที่คุณบันทึกไฟล์ที่เปิดอยู่ในโปรแกรมแก้ไข Visual C++ DOS2UNIX.exe จะถูกเรียกให้ลบ 0x0d s จากนั้นใช้แมโคร VBScript ต่อไปนี้: "เหตุการณ์นี้เกิดขึ้นทุกครั้งที่เอกสารถูกบันทึกในตัวแก้ไข VC++ Sub Application_DocumentSave(theDocument) "ซึ่งจะเรียกเครื่องมือผู้ใช้ในเมนูเครื่องมือ "เปลี่ยนตัวเลขขึ้นอยู่กับสิ่งที่คุณมี โดยค่าเริ่มต้นคุณมีเพียง 6 เครื่องมือภายใต้เมนู Tools ดังนั้นเครื่องมือ DOS2UNIX จะเป็นอันดับที่ 7 ExecuteCommand "UserTool7" สิ้นสุดย่อย รหัส VBScript นี้จะใช้งานได้เฉพาะเมื่อคุณเปิดไฟล์ใน Visual C++ Editor นี่เป็นวิธีเดียวที่จะเรียกไฟล์ exe จากมาโคร VBScript (ไม่สามารถส่งพารามิเตอร์มาโคร VBScript ได้) คุณสามารถเขียนแทนได้และจะมีความยืดหยุ่นมากขึ้น เรียกใช้เครื่องมือ "DOS2UNIX.exe" จาก Add-in โดยไม่ต้องเพิ่มเข้าไป บริการเมนู. ใน Visual C++ โดยใช้แมโคร VBScript ที่ให้มา:
ตอนนี้ หากคุณเปิดไฟล์ในตัวแก้ไข Visual C++ และบันทึกจากไฟล์ ไฟล์เมนูที่เรียกว่ามาโครและ 0x0d ทั้งหมดจะถูกลบออกจากไฟล์ที่เปิด เนื่องจากการดำเนินการนี้จะส่งผลต่อไฟล์ใดๆ ที่บันทึกไว้ต่อจากนี้และนำไปใช้กับโครงการใดๆ ที่คุณเปิดในอนาคต โปรดแน่ใจว่าได้ปิดการใช้งานมาโครจาก บริการเมนูโดยใช้ การตั้งค่า(ยกเลิกการเลือกช่องถัดจากมาโคร) คุณสามารถรวมไฟล์ .C หรือ .CPP ในไฟล์ต้นฉบับอื่นๆ ได้อย่างถูกต้อง ขึ้นอยู่กับ IDE ของคุณ โดยปกติคุณสามารถป้องกันการลิงก์ซ้ำได้โดยการดูคุณสมบัติของไฟล์ต้นฉบับที่คุณต้องการรวม โดยทั่วไปโดยการคลิกขวาที่ไฟล์เหล่านั้นและคลิกที่คุณสมบัติ และยกเลิกการเลือก /ตรวจสอบการคอมไพล์/ลิงก์/ยกเว้นจากบิลด์หรืออื่น ๆ ตัวเลือก . อาจจะ. หรือคุณไม่สามารถรวมไฟล์ไว้ในโปรเจ็กต์ได้ ดังนั้น IDE จึงไม่รู้ด้วยซ้ำว่ามีไฟล์อยู่และจะไม่พยายามคอมไพล์มัน และด้วย makefiles คุณเพียงแค่ไม่ต้องใส่ไฟล์ลงไปเพื่อคอมไพล์และลิงก์ แก้ไข: ขออภัย ฉันให้คำตอบแทนที่จะตอบคำตอบอื่น :( ขึ้นอยู่กับสภาพแวดล้อมการสร้างของคุณ (คุณจะไม่ระบุ) คุณอาจพบว่ามันทำงานตามที่คุณต้องการ อย่างไรก็ตาม มีสภาพแวดล้อมมากมาย (ทั้ง IDE และ Makefile ที่ทำด้วยมือจำนวนมาก) ที่คาดหวังว่า *.c จะต้องถูกคอมไพล์ - หากสิ่งนี้เกิดขึ้น คุณจะพบข้อผิดพลาดของตัวเชื่อมโยงเนื่องจากสัญลักษณ์ที่ซ้ำกัน โดยทั่วไปควรหลีกเลี่ยงการปฏิบัตินี้ หากคุณต้อง # รวมแหล่งที่มา (และโดยทั่วไปควรหลีกเลี่ยง) ให้ใช้ไฟล์อื่นสำหรับไฟล์นั้น ฉันคิดว่าฉันจะแชร์สถานการณ์ที่ทีมของฉันตัดสินใจรวมไฟล์ .c สถาปนิกของเราส่วนใหญ่ประกอบด้วยโมดูลที่แยกส่วนผ่านระบบส่งข้อความ ตัวจัดการข้อความเหล่านี้เป็นแบบสาธารณะและเรียกใช้ฟังก์ชันผู้ปฏิบัติงานแบบคงที่ในพื้นที่จำนวนมากเพื่อทำงานของตน ปัญหาเกิดขึ้นเมื่อพยายามรับความครอบคลุมสำหรับกรณีทดสอบเดี่ยวของเรา เนื่องจากวิธีเดียวที่จะใช้โค้ดการใช้งานส่วนตัวนี้คือทางอ้อมผ่านอินเทอร์เฟซข้อความทั่วไป ด้วยคุณสมบัติบางอย่างของผู้ปฏิบัติงานบนตัก สิ่งนี้พิสูจน์แล้วว่าเป็นฝันร้ายเพื่อให้แน่ใจว่าครอบคลุมได้อย่างเหมาะสม การรวมไฟล์ .c ทำให้เรามีโอกาสเข้าถึงฟันเฟืองในเครื่อง ซึ่งสนุกมากสำหรับเราในการทดสอบ การรวมไฟล์ C ไว้ในไฟล์อื่นนั้นถูกกฎหมาย แต่ไม่แนะนำ เว้นแต่คุณจะทราบแน่ชัดว่าทำไมคุณถึงทำมันและสิ่งที่คุณพยายามทำให้สำเร็จ ยังไงซะ ฉันพลาดส่วนที่สองของคำถามไป หากไฟล์ C รวมอยู่ในไฟล์อื่นและในเวลาเดียวกันก็รวมอยู่ในโปรเจ็กต์ คุณอาจประสบปัญหาเกี่ยวกับสัญลักษณ์ที่ซ้ำกัน สาเหตุที่ลิงก์อ็อบเจ็กต์ เช่น ฟังก์ชันเดียวกันจะถูกกำหนดสองครั้ง (เว้นแต่ว่าไฟล์เหล่านั้นจะเป็นแบบคงที่) ภาษา C ไม่ได้ห้าม #include ประเภทนี้ แต่หน่วยการแปลผลลัพธ์จะต้องยังคงเป็น C ที่ถูกต้อง ฉันไม่รู้ว่าคุณใช้โปรแกรมอะไรกับไฟล์ .prj หากคุณใช้บางอย่างเช่น "make" หรือ Visual Studio หรืออะไรก็ตาม เพียงตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าเป็นรายการไฟล์ที่ต้องคอมไพล์ โดยไม่มีไฟล์ที่ไม่สามารถคอมไพล์แยกกันได้ คุณควรเพิ่มส่วนหัวเช่นนี้ #รวม หมายเหตุ: ต้องวางทั้งสองไฟล์ไว้ในที่เดียวกัน คุณสามารถใช้คอมไพเลอร์ gcc บน linux เพื่อลิงก์สองไฟล์กับเอาต์พุตเดียว สมมติว่าคุณมีไฟล์ c สองไฟล์ ไฟล์หนึ่งคือ "main.c" และอีกไฟล์คือ "support.c" ดังนั้นคำสั่งให้เชื่อมต่อสองตัวนี้ก็คือ Gcc main.c support.c -o main.out สองไฟล์นี้จะเชื่อมโยงกับ main.out หนึ่งไฟล์ ในการรันเอาต์พุตคำสั่งจะเป็น ./main.out หากคุณใช้ฟังก์ชัน main.c ซึ่งได้รับการประกาศในไฟล์ support.c คุณควรประกาศฟังก์ชันดังกล่าวใน main และใช้คลาสพื้นที่เก็บข้อมูลภายนอกด้วย นามสกุลไฟล์ไม่สำคัญสำหรับคอมไพเลอร์ภาษา C ส่วนใหญ่ ดังนั้นจึงใช้ได้ อย่างไรก็ตาม ขึ้นอยู่กับไฟล์หรือการตั้งค่าโปรเจ็กต์ของคุณ ไฟล์ c ที่รวมไว้อาจสร้างไฟล์อ็อบเจ็กต์แยกต่างหาก เมื่อเชื่อมโยงแล้ว อาจทำให้มีอักขระที่กำหนดซ้ำซ้อนได้ |
อ่าน: |
---|
ใหม่
- หากรองเท้าไม่พอดีกับ Aliexpress: การกระทำที่ถูกต้องในกรณีนี้ ผลิตภัณฑ์ Aliexpress มีขนาดที่เหมาะสม
- ข้อพิพาทใน AliExpress เข้าร่วมข้อพิพาทใน AliExpress
- 3 ฐานข้อมูลแบบกระจาย
- ผู้จัดการเนื้อหา - ความรับผิดชอบ เงินเดือน การฝึกอบรม ข้อเสียและข้อดีของการทำงานเป็นผู้เชี่ยวชาญด้านเนื้อหา
- จะป้องกันตัวเองจากการขุดที่ซ่อนอยู่ในเบราว์เซอร์ของคุณได้อย่างไร?
- การกู้คืนรหัสผ่านใน Ask
- วิธีเปิดกล้องบนแล็ปท็อป
- ทำไมเพลงไม่เล่นบน VKontakte?
- วิธีเพิ่มขนาดของไดรฟ์ C โดยเสียค่าใช้จ่ายของไดรฟ์ D โดยไม่สูญเสียข้อมูล
- สาเหตุของการทำงานผิดพลาดบนเมนบอร์ด หากชิปเซ็ตบนเมนบอร์ดเกิดไฟไหม้