ในบทความนี้ เราจะเข้าใจความแตกต่างระหว่างอินไลน์และมาโครใน C++
อินไลน์
-
เป็นฟังก์ชันในภาษา C++
-
มันถูกแยกวิเคราะห์โดยคอมไพเลอร์
-
สามารถกำหนดได้ภายในหรือภายนอกชั้นเรียน
-
จะประเมินอาร์กิวเมนต์เพียงครั้งเดียว
-
คอมไพเลอร์ไม่สามารถแปลงฟังก์ชันทั้งหมดเป็นฟังก์ชัน "อินไลน์" และขยายฟังก์ชันทั้งหมดได้
-
ฟังก์ชันสั้น ๆ ที่กำหนดไว้ภายในคลาสจะถูกสร้างโดยอัตโนมัติเป็นฟังก์ชันอินไลน์
-
ฟังก์ชันอินไลน์ภายในคลาสสามารถเข้าถึงข้อมูลสมาชิกของคลาสได้
-
ฟังก์ชันอินไลน์สามารถยุติได้โดยใช้วงเล็บปีกกา
-
ง่ายต่อการดีบัก
-
นี่เป็นเพราะการตรวจสอบข้อผิดพลาดเกิดขึ้นระหว่างการคอมไพล์
-
มันผูกคำสั่งทั้งหมดในเนื้อความของฟังก์ชัน
ตัวอย่าง
inline return_type funct_name ( parameters ) { . . . }
มาโคร
-
มันถูกขยายโดยตัวประมวลผลล่วงหน้า
-
ถูกกำหนดไว้ที่จุดเริ่มต้นของโปรแกรม
-
โดยจะประเมินอาร์กิวเมนต์ทุกครั้งที่มีการใช้ภายในโค้ด
-
จำเป็นต้องขยาย/ขยายเสมอ
-
ต้องกำหนดไว้โดยเฉพาะ
-
พวกเขาจะไม่มีวันกลายเป็นสมาชิกของชั้นเรียน
-
พวกเขาเข้าถึงข้อมูลสมาชิกของชั้นเรียนไม่ได้
-
คำจำกัดความของมาโครลงท้ายด้วยบรรทัดใหม่
-
เป็นการยากที่จะดีบักมาโครเนื่องจากไม่มีการตรวจสอบข้อผิดพลาดระหว่างเวลาคอมไพล์
-
พบปัญหาการผูกมัดหากมีมากกว่าหนึ่งคำสั่งเนื่องจากไม่มีสัญลักษณ์การสิ้นสุด
ตัวอย่าง
#define macro_name char_sequence