Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่างอินไลน์และมาโครใน C ++


ในบทความนี้ เราจะเข้าใจความแตกต่างระหว่างอินไลน์และมาโครใน C++

อินไลน์

  • เป็นฟังก์ชันในภาษา C++

  • มันถูกแยกวิเคราะห์โดยคอมไพเลอร์

  • สามารถกำหนดได้ภายในหรือภายนอกชั้นเรียน

  • จะประเมินอาร์กิวเมนต์เพียงครั้งเดียว

  • คอมไพเลอร์ไม่สามารถแปลงฟังก์ชันทั้งหมดเป็นฟังก์ชัน "อินไลน์" และขยายฟังก์ชันทั้งหมดได้

  • ฟังก์ชันสั้น ๆ ที่กำหนดไว้ภายในคลาสจะถูกสร้างโดยอัตโนมัติเป็นฟังก์ชันอินไลน์

  • ฟังก์ชันอินไลน์ภายในคลาสสามารถเข้าถึงข้อมูลสมาชิกของคลาสได้

  • ฟังก์ชันอินไลน์สามารถยุติได้โดยใช้วงเล็บปีกกา

  • ง่ายต่อการดีบัก

  • นี่เป็นเพราะการตรวจสอบข้อผิดพลาดเกิดขึ้นระหว่างการคอมไพล์

  • มันผูกคำสั่งทั้งหมดในเนื้อความของฟังก์ชัน

ตัวอย่าง

inline return_type funct_name ( parameters ) {
   . . .
}

มาโคร

  • มันถูกขยายโดยตัวประมวลผลล่วงหน้า

  • ถูกกำหนดไว้ที่จุดเริ่มต้นของโปรแกรม

  • โดยจะประเมินอาร์กิวเมนต์ทุกครั้งที่มีการใช้ภายในโค้ด

  • จำเป็นต้องขยาย/ขยายเสมอ

  • ต้องกำหนดไว้โดยเฉพาะ

  • พวกเขาจะไม่มีวันกลายเป็นสมาชิกของชั้นเรียน

  • พวกเขาเข้าถึงข้อมูลสมาชิกของชั้นเรียนไม่ได้

  • คำจำกัดความของมาโครลงท้ายด้วยบรรทัดใหม่

  • เป็นการยากที่จะดีบักมาโครเนื่องจากไม่มีการตรวจสอบข้อผิดพลาดระหว่างเวลาคอมไพล์

  • พบปัญหาการผูกมัดหากมีมากกว่าหนึ่งคำสั่งเนื่องจากไม่มีสัญลักษณ์การสิ้นสุด

ตัวอย่าง

#define macro_name char_sequence