เราจะมาดูกันว่า __FUNCTION__, __func__ และ __PRETTY_FUNCTION__ มีความแตกต่างกันอย่างไร
โดยทั่วไป __FUNCTION__ และ __func__ จะเหมือนกัน C และ C++ รุ่นเก่าบางรุ่นรองรับ __func__ มาโครนี้ใช้เพื่อรับชื่อของฟังก์ชันปัจจุบัน _PRETTY_FUNCTION__ ใช้เพื่อส่งคืนรายละเอียดเกี่ยวกับฟังก์ชัน เมื่อใช้สิ่งนี้ เราจะได้รับฟังก์ชันที่ใช้ และอยู่ในคลาสใด ฯลฯ
ตัวอย่าง
#include<iostream> using namespace std; class MyClass{ public: void Class_Function(){ cout << "The result of __PRETTY_FUNCTION__: " << __PRETTY_FUNCTION__ << endl; } }; void TestFunction(){ cout << "Output of __func__ is: " << __func__ << endl; } main() { cout << "Output of __FUNCTION__ is: " << __FUNCTION__ << endl; TestFunction(); MyClass myObj; myObj.Class_Function(); }
ผลลัพธ์
Output of __FUNCTION__ is: main Output of __func__ is: TestFunction The result of __PRETTY_FUNCTION__: void MyClass::Class_Function()