Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ตัวระบุที่กำหนดไว้ล่วงหน้า __func__ ใน C


ตัวระบุ เป็นชื่อที่กำหนดให้เอนทิตีในการเขียนโปรแกรมเพื่อระบุตัวตนในโปรแกรม

โดยทั่วไป โปรแกรมเมอร์สร้างตัวระบุเพื่อการทำงานที่มีประสิทธิภาพ แต่มีตัวระบุที่กำหนดไว้ล่วงหน้าบางตัวที่ฝังอยู่ในโปรแกรม เช่น 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__ ตัวระบุ