ฉันเข้าใจว่าinline
โดยตัวมันเองเป็นข้อเสนอแนะของคอมไพเลอร์และตามดุลยพินิจของมันอาจหรือไม่อาจอินไลน์ฟังก์ชันและมันจะสร้างรหัสออบเจ็กต์ที่เชื่อมโยงได้ด้วย
ฉันคิดว่าstatic inline
มันเหมือนกัน (อาจหรืออาจไม่อินไลน์ก็ได้) แต่จะไม่สร้างโค้ดออบเจ็กต์ที่เชื่อมโยงได้เมื่ออินไลน์ (เนื่องจากไม่มีโมดูลอื่นที่สามารถเชื่อมโยงไปได้)
สถานที่ที่ไม่extern inline
เหมาะสมลงในภาพหรือไม่
สมมติว่าฉันต้องการแทนที่มาโครตัวประมวลผลล่วงหน้าด้วยฟังก์ชันอินไลน์และต้องการให้ฟังก์ชันนี้อินไลน์ (เช่นเนื่องจากใช้มาโคร__FILE__
และ__LINE__
มาโครที่ควรแก้ไขสำหรับผู้เรียก แต่ไม่ใช่ฟังก์ชันที่เรียกว่านี้) นั่นคือฉันต้องการเห็นข้อผิดพลาดของคอมไพเลอร์หรือตัวเชื่อมโยงในกรณีที่ฟังก์ชันไม่ได้รับการอินไลน์ ไม่extern inline
ทำเช่นนี้? (ฉันคิดว่าถ้าไม่เป็นเช่นนั้นจะไม่มีวิธีใดที่จะบรรลุพฤติกรรมนี้นอกจากการยึดติดกับมาโคร)
มีความแตกต่างระหว่าง C ++ และ C หรือไม่?
มีความแตกต่างระหว่างผู้จำหน่ายคอมไพเลอร์และเวอร์ชันต่างๆหรือไม่?