ความแตกต่างที่สำคัญ – มาโครกับฟังก์ชันอินไลน์
มาโครเป็นส่วนหนึ่งของโค้ด ซึ่งเป็นคำสั่งของตัวประมวลผลล่วงหน้า ฟังก์ชันอินไลน์คือคุณลักษณะการเพิ่มประสิทธิภาพ C++ เพื่อลดเวลาดำเนินการของโปรแกรม ดังนั้น ความแตกต่างที่สำคัญระหว่างมาโครและฟังก์ชันอินไลน์คือมาโครถูกตรวจสอบโดยตัวประมวลผลล่วงหน้าในขณะที่คอมไพเลอร์ตรวจสอบฟังก์ชันอินไลน์
รวมมาโครที่จุดเริ่มต้นของโปรแกรมที่นำหน้าด้วยเครื่องหมายแฮช เมื่อมีชื่อมาโครในโปรแกรม มันจะถูกแทนที่ด้วยเนื้อหาของมาโคร
มาโครคืออะไร
ตัวประมวลผลล่วงหน้าเป็นโปรแกรมที่ประมวลผลซอร์สโค้ดก่อนที่จะส่งผ่านคอมไพเลอร์มันทำงานโดยใช้บรรทัดคำสั่งของตัวประมวลผลล่วงหน้าหรือคำสั่ง ในโปรแกรม คำสั่งพรีโปรเซสเซอร์จะถูกวางไว้ในโปรแกรมต้นทางก่อนโปรแกรมหลัก ก่อนที่ซอร์สโค้ดจะผ่านคอมไพเลอร์ ตัวประมวลผลล่วงหน้าจะได้รับการตรวจสอบสำหรับคำสั่งของตัวประมวลผลล่วงหน้า คำสั่งพรีโปรเซสเซอร์มีสัญลักษณ์ต่างจากประโยคอื่นๆ ที่ไม่ได้ลงท้ายด้วยอัฒภาค คำสั่งพรีโปรเซสเซอร์ประเภทหนึ่งคือมาโคร โดยทั่วไปแล้วมาโครจะเขียนด้วยตัวพิมพ์ใหญ่
รูปที่ 01: โปรแกรม C++ พร้อมมาโคร
ตามโปรแกรมด้านบน บรรทัดที่ 3 และบรรทัดที่ 4 หมายถึงมาโคร เมื่อคำนวณพื้นที่ ค่า PI จะถูกแทนที่โดยใช้มาโครที่กำหนดไว้ ในบรรทัดที่ 14 volume=CUBE(value) ตัวประมวลผลล่วงหน้าจะขยายคำสั่งเป็น volume=(valuevaluevalue)การหาลูกบาศก์สามารถเขียนเป็นฟังก์ชันได้ แต่ในที่นี้เขียนโดยใช้มาโคร หากมีคำสั่งเป็น volume=CUBE(x+y) ก็จะขยายเป็น volume=(x+yx+yx+y).
โทเค็นการเขียนโปรแกรมบางตัวอาจพิมพ์ผิดได้ง่าย สามารถแทนที่ได้โดยใช้มาโคร เช่น. define และ &&, define OR ||. คำจำกัดความของมาโครยังสามารถรวมนิพจน์ เช่น define AREA 45.56.
ฟังก์ชันอินไลน์คืออะไร
เมื่อเรียกใช้ฟังก์ชัน คอมไพเลอร์จะใช้เวลาสักครู่ในการดำเนินการ หากฟังก์ชันไม่ซับซ้อนมาก โปรแกรมเมอร์สามารถแปลงฟังก์ชันเป็นฟังก์ชันอินไลน์ได้ อ้างอิงโปรแกรมด้านล่าง
รูปที่ 02: ฟังก์ชันที่ไม่มีอินไลน์
print_hello เป็นฟังก์ชันง่ายๆ มันพิมพ์สตริง "สวัสดี" เมื่อเรียกใช้ฟังก์ชัน เวลาดำเนินการสำหรับฟังก์ชันนั้นคือ 0.187 วินาที เมื่อใช้คำสำคัญแบบอินไลน์ดังนี้ เวลาดำเนินการจะลดลงเหลือ 0.064 วินาที
รูปที่ 03: ฟังก์ชันอินไลน์
ดังนั้น เมื่อใช้คำสำคัญในบรรทัด เวลาดำเนินการจะลดลง ฟังก์ชันอินไลน์อาจไม่ทำงานหากมีการวนซ้ำ คำสั่ง switch และหากฟังก์ชันมีตัวแปรสแตติกหรือฟังก์ชันแบบเรียกซ้ำ
ฟังก์ชั่นมาโครและอินไลน์ต่างกันอย่างไร
มาโครเทียบกับฟังก์ชันอินไลน์ |
|
มาโครคือส่วนย่อยของรหัส ซึ่งเป็นคำสั่งตัวประมวลผลล่วงหน้าที่รวมไว้ที่จุดเริ่มต้นของโปรแกรมที่นำหน้าด้วยเครื่องหมายแฮช | ฟังก์ชันอินไลน์คือคุณลักษณะการเพิ่มประสิทธิภาพ C++ เพื่อลดเวลาในการดำเนินการของโปรแกรม |
เวลาประเมิน | |
ในมาโคร อาร์กิวเมนต์จะได้รับการประเมินทุกครั้งที่ใช้ในโปรแกรม | ในบรรทัด อาร์กิวเมนต์จะได้รับการประเมินหนึ่งครั้ง |
ตรวจสอบโดย | |
ตัวประมวลผลล่วงหน้าตรวจสอบมาโคร | คอมไพเลอร์ตรวจสอบฟังก์ชันอินไลน์ |
คำหลัก | |
มาร์โคใช้ define. | ฟังก์ชันอินไลน์ใช้คีย์เวิร์ด 'inline' |
การใช้งาน | |
มาโครสามารถใช้เพื่อกำหนดค่าคงที่ นิพจน์ สำหรับการแทนที่ข้อความตามตัวอักษรและเพื่อกำหนดฟังก์ชัน ฯลฯ | ฟังก์ชันอินไลน์สามารถใช้เพื่อลดเวลาดำเนินการของโปรแกรมให้เหลือน้อยที่สุด |
สิ้นสุด | |
มาโครสิ้นสุดด้วยบรรทัดใหม่ | ฟังก์ชันอินไลน์สิ้นสุดลงด้วยวงเล็บปีกกาที่ส่วนท้ายของฟังก์ชันอินไลน์ |
การกำหนดจุด | |
มาร์โคถูกกำหนดไว้ที่จุดเริ่มต้นของโปรแกรม | ฟังก์ชั่นอินไลน์สามารถอยู่ภายในหรือนอกชั้นเรียน |
Summary – Macro vs Inline Function
บทความนี้กล่าวถึงความแตกต่างระหว่างฟังก์ชันมาโครและอินไลน์ แนวคิดเหล่านี้ใช้ในการเขียนโปรแกรม C++ ความแตกต่างระหว่างมาโครและฟังก์ชันอินไลน์คือมาโครถูกตรวจสอบโดยตัวประมวลผลล่วงหน้าในขณะที่คอมไพเลอร์ตรวจสอบฟังก์ชันอินไลน์