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

Anonim

อินไลน์หรือมาโคร

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

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

- อินไลน์

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

ตัวอย่าง:

(int x, int y)

{

กลับ (x + y);

}

แมโคร

มาโครใน C ++ ใช้การแทนที่ข้อความในบรรทัดโปรแกรม นั่นคือพวกเขาแทนที่ข้อความตามการเปลี่ยนแปลงที่กำหนดไว้ในฟังก์ชัน ไม่เหมือนกับอินไลน์เป็นฟังก์ชันแมโครจะจัดการกับโค้ดโดยใช้ฟังก์ชัน ตัวอย่างเช่น:

#define DOUBLE (X) X * X

int y = 5;

int j = DOUBLE (++ y);

ที่นี่เราจะได้รับค่าเป็น 30! เมื่อการโทรผ่านทางมาโคร "X" ถูกแทนที่ด้วย + + y ซึ่งทำให้ + + y ถูกคูณด้วย + ++ y อีก นี้ทำให้จำนวน 5 * 6 ที่ 30 ไม่ 6 หกจะเป็นพื้นฐาน แต่คำตอบผิด

ขณะนี้มาโครอาจก่อให้เกิดข้อบกพร่องที่นี่ ดังนั้นฟังก์ชันอินไลน์มาช่วยโดยการคัดลอกค่าไปยังหน่วยความจำของคอมไพเลอร์แล้วรวบรวมข้อมูล

สรุป:

1. ฟังก์ชันแบบอินไลน์จะสร้างสำเนาของคำจำกัดความฟังก์ชัน

2 แมโครแทนที่ข้อความตามที่ระบุและกำหนดไว้ภายในฟังก์ชัน

3 ฟังก์ชันแบบอินไลน์จะถูกใช้เมื่อแมโครควรจะทำให้เกิดข้อบกพร่องในโปรแกรม