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

ความแตกต่างระหว่าง Inline และ Macro ใน C++

ในบทความนี้ เราจะทำความเข้าใจความแตกต่างระหว่าง inline และ macro ใน C++

Inline

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

ตัวอย่าง

inline return_type funct_name ( parameters ) { . . . }

Macro

  • ถูกขยายโดย preprocessor
  • ถูกนิยามที่จุดเริ่มต้นของโปรแกรม
  • ประเมินค่าอาร์กิวเมนต์ทุกครั้งที่ใช้ในโค้ด
  • จะต้องถูกขยายเสมอ
  • ต้องนิยามอย่างชัดเจน
  • จะไม่กลายเป็นสมาชิกของคลาสเลย
  • ไม่สามารถเข้าถึงสมาชิกข้อมูลของคลาสได้
  • การนิยาม macro จบด้วยบรรทัดใหม่
  • ยากต่อการ debug macro เนื่องจากไม่มีการตรวจสอบข้อผิดพลาดระหว่างคอมไพล์
  • เกิดปัญหา binding หากมีมากกว่าหนึ่งคำสั่ง เนื่องจากไม่มีสัญลักษณ์สิ้นสุด

ตัวอย่าง

#define macro_name char_sequence