ปริศนาการเรียกใช้ฟังก์ชัน C/C++ นี้เป็นปริศนาที่มีจุดประสงค์เพื่อสำรวจเพิ่มเติมเกี่ยวกับพฤติกรรมของการเรียกใช้เมธอดทั้งในภาษาโปรแกรม C และ C++/
ผลลัพธ์ของวิธีการใน C และ C++ แตกต่างกัน มาดูกันว่าวิธีการเรียกในภาษา C และ C++ แตกต่างกันอย่างไร
มาดูตัวอย่างและตรวจสอบผลลัพธ์ของโค้ดด้านล่างใน c และ c++
ตัวอย่าง
void method() { // Print statement } int main() { method(); method(2); }
ผลลัพธ์
สำหรับ C++ -
Error : too many arguments to function ‘void method()’
สำหรับ C −
Program runs without any error.
ตรรกะเบื้องหลังผลลัพธ์และข้อผิดพลาด
คอมไพเลอร์สำหรับภาษาโปรแกรม C++ จะถือว่า function method() เป็นฟังก์ชันที่ไม่มีพารามิเตอร์ใด ๆ ในขณะที่ฟังก์ชันเดียวกันในคอมไพเลอร์ C ทำงานค่อนข้างมีประสิทธิภาพ เนื่องจากคอมไพเลอร์ปฏิบัติต่อ function method() เป็นฟังก์ชันที่สามารถรับอาร์กิวเมนต์ของตัวแปรได้
ด้วยเหตุนี้ i C++ เมื่อเราส่งผ่านอาร์กิวเมนต์ไปยังเมธอดที่ไม่มีพารามิเตอร์ในคำจำกัดความ จะมีข้อความแจ้งข้อผิดพลาดในหน้าต่างเอาต์พุตว่า 'ข้อผิดพลาด:มีอาร์กิวเมนต์มากเกินไปที่จะทำงาน 'void func()'
และในภาษา C จะยอมรับอาร์กิวเมนต์ที่ส่งผ่านและโค้ดภายในฟังก์ชันจะถูกดำเนินการ