C++ __FILE__ มาโคร

C File Makhor



มาโครคือโค้ดบางส่วนในสคริปต์บางตัวที่มีชื่อเฉพาะ เมื่อมีการเรียกใช้แมโครใด ๆ โค้ดที่อยู่เบื้องหลังจะถูกดำเนินการเพื่อทำงานบางอย่าง เช่นเดียวกับที่ __FILE__ เป็นมาโครที่ใช้ภายในภาษา C++ เพื่อรับเส้นทางไปยังไฟล์เฉพาะ ดังนั้น วันนี้ในคู่มือนี้ เราจะพูดถึงการทำงานของมาโคร C++ __FILE__

ตัวอย่าง 01:

มาดูตัวอย่างแรกของแมโคร __FILE__ ใน C++ โดยเริ่มต้นแอปพลิเคชันคอนโซลเทอร์มินัล คุณอาจใช้ทางลัด “Ctrl+Alt+T” เพื่อทำเช่นนั้น อีกวิธีในการเปิดเชลล์คือการใช้เมนู พื้นที่กิจกรรม หากคุณลืมปุ่มทางลัด หลังจากเปิดใช้งานคอนโซลเทอร์มินัลบนหน้าจอของคุณแล้ว ให้ลองสร้างไฟล์ c++ ใหม่เพื่อทำโค้ดในนั้น สามารถสร้างไฟล์ได้โดยใช้คำสั่ง 'สัมผัส' อย่างง่าย ดังที่แสดงในรูปที่แนบมาด้านล่าง ชื่อของไฟล์ที่สร้างขึ้นใหม่จะต้องระบุด้วยคีย์เวิร์ด 'สัมผัส'







ต้องมีตัวแก้ไขบางตัวติดตั้งบนระบบ Ubuntu 20.04 Linux ของคุณเพื่อใช้ในการเข้ารหัสและเปิดไฟล์ที่สร้างขึ้นใหม่ ตัวแก้ไขที่แนะนำมากที่สุดซึ่งรู้จักกันอย่างกว้างขวางในหมู่ผู้ใช้ Linux คือตัวแก้ไข GNU Nano และ Vim นอกเหนือจากนั้น โปรแกรมแก้ไขข้อความยังสามารถใช้ในกรณีที่โปรแกรมแก้ไขทั้งสองที่กล่าวถึงก่อนหน้านี้ไม่ทำงาน ดังนั้นเราจึงติดตั้งตัวแก้ไข GNU Nano แล้ว ดังนั้นเราจะใช้เพื่อเปิดและแก้ไขไฟล์เพื่อสร้างรหัส ใช้คีย์เวิร์ด “nano” พร้อมกับชื่อไฟล์เพื่อให้โปรแกรมแก้ไขทำงาน





ตอนนี้ไฟล์ macro.cc ของ C++ ที่สร้างขึ้นใหม่ก็พร้อมสำหรับการเขียนโค้ดในเอดิเตอร์แล้ว มาเริ่มใช้งานโค้ด C++ กันในขณะที่เรากำลังใช้งานบทความนี้เพื่อดูการทำงานของมาโคร __FILE__ เราได้เริ่มต้นโค้ด C++ โดยเพิ่มส่วนหัวอินพุตและเอาต์พุตมาตรฐานที่ด้านบน มีการใช้คำหลัก 'รวม' กับเครื่องหมายแฮชเพื่อทำเช่นนั้น หากไม่มีส่วนหัวนี้ อินพุตและเอาต์พุตของโค้ด C++ จะไม่ทำงานบนคอนโซลเมื่อมีการคอมไพล์และดำเนินการ





เมธอด main() เป็นเสาหลักของโค้ดของเราเมื่อการดำเนินการเริ่มต้นจากมันและสิ้นสุดในนั้น ภายในเมธอด main() งานจริงจะเสร็จสิ้น เราใช้โค้ดบรรทัดเดียวในเมธอด main() เพื่ออธิบายการทำงานของมาโคร __FILE__ ดังนั้นจึงมีการใช้คำสั่ง printf ที่นี่ โดยรับค่าทั้งสองเป็นอาร์กิวเมนต์ เช่น สตริงที่ใช้ชื่อไฟล์และฟังก์ชันมาโคร

ที่นี่ใช้แมโคร __FILE__ เพื่อรับเส้นทางไฟล์ปัจจุบันหรือชื่อของมัน ขณะที่ “%S” ใช้เพื่อพิมพ์เส้นทางปัจจุบันของไฟล์หรือชื่อภายในสตริง คุณต้องบันทึกโค้ดของคุณก่อนดำเนินการโดยใช้ทางลัด “Ctrl+S” ตอนนี้รหัสได้รับการบันทึกแล้ว ลองกลับไปที่เทอร์มินัลเชลล์โดยใช้ทางลัด “Ctrl+X”



เมื่อเราทำโค้ด C++ สำหรับมาโคร __FILE__ เสร็จแล้ว เรามาเริ่มการคอมไพล์โค้ด C++ กันเลย สำหรับการคอมไพล์ เราได้ติดตั้งคอมไพเลอร์ g++ เพื่อคอมไพล์โค้ด C++ แล้ว ดังนั้น จึงมีการใช้คอมไพเลอร์ g++ ในเทอร์มินัลเพื่อคอมไพล์ไฟล์ “macro.cc” เมื่อคอมไพล์แล้ว จะไม่ส่งคืนสิ่งใด ซึ่งบ่งชี้ว่าโค้ด C++ ที่อยู่ภายในไฟล์ macro.cc นั้นถูกต้องตามความหมาย หลังจากการคอมไพล์แล้ว ก็มาถึงขั้นตอนการรันโค้ด ในการเรียกใช้ไฟล์โค้ด เรามักจะใช้คำสั่งง่ายๆ “./.aout” เมื่อเรียกใช้ไฟล์ macro.cc เราได้ชื่อไฟล์กลับมา นี่คือวิธีการทำงานของมาโคร C++ __FILE__

ตัวอย่าง 02:

ลองมาดูอีกตัวอย่างหนึ่งเพื่อเจาะลึกการทำงานของมาโคร C++ __FILE__ ภายในระบบ Ubuntu 20.04 ดังที่เราได้เห็นแล้วว่ามาโคร C++ __FILE__ ทำงานอย่างไรเมื่อถูกใช้เพื่อดึงเส้นทางไฟล์ของไฟล์ที่มีการกล่าวถึง

ตอนนี้ เราจะใช้มาโคร C++ __FILE__ เพื่อรับเส้นทางไฟล์หรือชื่อไฟล์อื่นที่ไม่ใช่ไฟล์ที่เรากำลังทำงานอยู่ ดังนั้นเราจึงเปิดไฟล์ macro.cc เดียวกันในโปรแกรมแก้ไข GNU Nano เพื่ออัปเดตโค้ด เราได้เพิ่มส่วนหัวอินพุตและเอาต์พุตมาตรฐานพร้อมคำหลักรวมและเริ่มต้นฟังก์ชัน main() ด้วยประเภทการคืนค่าจำนวนเต็ม

ภายในเมธอด main() คำสั่งพิมพ์แรกจะเหมือนกับคำสั่งเก่าเพื่อรับเส้นทางไฟล์ปัจจุบันที่เรากำลังทำงานอยู่ หลังจากนั้น เราได้ใช้คำหลัก #line กับชื่อไฟล์อื่น เช่น “new.txt” ที่บรรทัดถัดไป นี่คือการระบุไฟล์อื่นที่ไม่ใช่ไฟล์ปัจจุบันซึ่งเราจะได้รับชื่อหรือเส้นทาง มีการใช้คำสั่ง printf ถัดไปเพื่อพิมพ์พาธของไฟล์ “new.txt” โดยใช้แมโคร C++ __FILE__ บันทึกรหัสที่อัปเดตใหม่ของคุณเพื่อหลีกเลี่ยงความไม่สะดวกในเวลารวบรวม ใช้ “Ctrl+S” เพื่อทำเช่นนั้น

หลังจากบันทึกไฟล์ที่อัปเดตแล้ว ให้ปิดไฟล์โดยใช้ “Ctrl+X” จากแป้นพิมพ์ ตอนนี้เรากลับมาที่หน้าจอเชลล์แล้ว

มารวบรวมไฟล์ที่อัปเดต ใช้คอมไพเลอร์ g++ เพื่อตั้งชื่อไฟล์ macro.cc หลังจากการคอมไพล์สำเร็จ ให้รันโค้ดด้วยคำสั่ง “./a.out” ในคอนโซล เอาต์พุตจะแสดงพาธไปยังไฟล์ปัจจุบันก่อน จากนั้นจึงแสดงพาธไปยังไฟล์อื่น “new.txt” บนหน้าจอเชลล์ ดูว่ามันง่ายแค่ไหนในการใช้มาโคร __FILE__ เพื่อแสดงพาธของไฟล์บนเชลล์

ตัวอย่าง 03:

มาดูมาโคร __LINE__ พร้อมกับมาโคร __FILE__ ในภาษา C++ มาโคร __LINE__ จะแสดงหมายเลขบรรทัดของไฟล์ที่มีการใช้มาโคร ดังนั้น ให้เปิดไฟล์เดียวกันและอัพเดตทั้งคำสั่ง printf ก่อนมาโคร C++ __LINE__ เราได้เพิ่มมาโคร C++ __LINE__ __LINE__มาโครนี้รับหมายเลขบรรทัดของไฟล์ปัจจุบันโดยที่ __FILE__ มาก่อน ในขณะที่มาโคร __LINE__ ถัดไปจะได้หมายเลขบรรทัดแรกของไฟล์อื่น เนื่องจากเราได้ระบุหมายเลขบรรทัดพร้อมชื่อไฟล์ในโค้ดแล้ว

หลังจากบันทึกและออกจากไฟล์ เราได้กลับไปที่เทอร์มินัลเชลล์ เรากำลังใช้คำสั่ง g++ เดียวกันเพื่อคอมไพล์โค้ดไฟล์ macro.cc ของ C++ การคอมไพล์ที่สำเร็จจะนำไปสู่การเรียกใช้คำสั่ง ตอนนี้ใช้คำสั่ง './a.out' ที่นี่เพื่อดำเนินการดังกล่าว การดำเนินการบอกเราว่าไฟล์แรก เช่น ไฟล์ปัจจุบันในบรรทัดที่ 3 ในขณะที่มาโคร __FILE__ อยู่ในบรรทัดแรกของไฟล์อื่นที่กล่าวถึงในโค้ด

บทสรุป:

บทความนี้ประกอบด้วยคำจำกัดความของมาโครและกล่าวถึงการใช้มาโคร C++ __FILE__ ในระบบ Ubuntu 20.04 นอกจากนี้ ยังมีการกล่าวถึงแมโคร C++ __LINE__ ในตัวอย่างบางส่วนเพื่ออธิบายการทำงานของแมโคร C++ __FILE__ เพิ่มเติม โดยสรุป เราหวังเป็นอย่างยิ่งว่าบทความนี้จะช่วยคุณเกี่ยวกับ C++ __FILE__มาโครได้ดีที่สุด