ตัวระบุ เป็นชื่อที่กำหนดให้เอนทิตีในการเขียนโปรแกรมเพื่อระบุตัวตนในโปรแกรม
โดยทั่วไป โปรแกรมเมอร์สร้างตัวระบุเพื่อการทำงานที่มีประสิทธิภาพ แต่มีตัวระบุที่กำหนดไว้ล่วงหน้าบางตัวที่ฝังอยู่ในโปรแกรม เช่น cout, cin เป็นต้น
ที่นี่ เราจะเห็นหนึ่งในตัวระบุที่กำหนดไว้ล่วงหน้าของภาษาการเขียนโปรแกรม C ซึ่งก็คือ __func__
คำจำกัดความอย่างเป็นทางการของ __func__ คือ −
“ตัวระบุ __func__ จะถูกประกาศโดยปริยายโดยปริยาย ราวกับว่า การประกาศตามวงเล็บปีกกาเปิดของแต่ละนิยามฟังก์ชันทันที
static const char __func__[] = “function-name”;
ปรากฏขึ้น โดยที่ function-name เป็นชื่อของฟังก์ชันที่ปิดล้อมคำศัพท์”
โปรแกรม C __func__ คือตัวระบุที่สร้างโดยคอมไพเลอร์ซึ่งสร้างขึ้นเพื่อระบุฟังก์ชันโดยใช้ชื่อฟังก์ชัน
มาดูตัวอย่างโค้ดบางส่วนเพื่อให้แนวคิดชัดเจนยิ่งขึ้น
ตัวอย่าง
#include <stdio.h> void function1 (void){ printf ("%s\n", __func__); } void function2 (void){ printf ("%s\n", __func__); function1 (); } int main (){ function2 (); return 0; }
ผลลัพธ์
function2 function1
คำอธิบาย − ในที่นี้ เราได้ใช้เมธอด __func__ เพื่อส่งคืนชื่อของฟังก์ชันที่เรียกใช้ ตัวระบุส่งคืนชื่อของฟังก์ชันที่เรียกใช้ คำสั่งการพิมพ์ทั้งสองเรียกใช้ __func__ สำหรับการอ้างอิงเมธอดของตัวเอง
การระบุนี้ใช้ได้กับวิธีการหลัก ตัวอย่าง
ตัวอย่าง
#include <stdio.h> int main (){ printf ("%s\n", __func__); return 0; }
ผลลัพธ์
main
แต่สิ่งนี้ไม่สามารถเขียนทับได้ เช่น __func__ สงวนไว้สำหรับชื่อฟังก์ชันเท่านั้น การใช้เพื่อเก็บสิ่งอื่นจะทำให้เกิดข้อผิดพลาด
มาดูกัน
ตัวอย่าง
#include <stdio.h> int __func__ = 123; int main (){ printf ("%s\n", __func__); return 0; }
ผลลัพธ์
error
มีฟังก์ชันอื่นที่คล้ายคลึงกันในภาษาการเขียนโปรแกรม C ซึ่งทำหน้าที่ระบุตัวตนที่คล้ายกัน บางส่วนคือ
__ไฟล์__ − ส่งคืนชื่อไฟล์ปัจจุบัน
__LINE__ − ส่งกลับจำนวนบรรทัดปัจจุบัน
มาดูโค้ดแสดงการใช้งานกัน
ตัวอย่าง
#include <stdio.h> void function1(){ printf("The function: %s is in line: %d of the file :%s\n", __func__,__LINE__,__FILE__); } int main(){ function1(); return 0; }
ผลลัพธ์
The function: function1 is in line: 3 of the file :main.c
คำอธิบาย − ฟังก์ชันเหล่านี้เป็นฟังก์ชันทั่วไปที่อาจเป็นประโยชน์ เนื่องจากเราได้รวบรวมข้อมูลเกี่ยวกับชื่อไฟล์ บรรทัดของโค้ด และฟังก์ชันที่เรียกใช้ในปัจจุบันโดยใช้ตัวระบุ __func__,__LINE__,__FILE__ ตัวระบุ