Computer >> Máy Tính >  >> Lập trình >> lập trình C

Mã định danh được xác định trước __func__ trong C

Số nhận dạng là tên được đặt cho một thực thể trong lập trình để xác định nó trong chương trình.

Nói chung, các số nhận dạng được lập trình viên tạo ra để làm việc hiệu quả nhưng có một số số nhận dạng được xác định trước được tạo sẵn trong lập trình. Ví dụ:cout, cin, v.v.

Tại đây, chúng ta sẽ thấy một trong những số nhận dạng được xác định trước của ngôn ngữ lập trình C là __func__.

Định nghĩa chính thức của __func__ là -

“Định danh __func__ sẽ được người dịch khai báo ngầm như thể, ngay sau dấu ngoặc nhọn mở của mỗi định nghĩa hàm, khai báo

static const char __func__[] = “function-name”;

đã xuất hiện, trong đó tên-hàm là tên của hàm bao gồm từ vựng. ”

Chương trình C __func__ là một mã định danh do trình biên dịch tạo ra để xác định hàm bằng cách sử dụng tên hàm.

Hãy xem một vài ví dụ về mã để làm cho khái niệm rõ ràng hơn,

Ví dụ

#include <stdio.h>
void function1 (void){
   printf ("%s\n", __func__);
}
void function2 (void){
   printf ("%s\n", __func__);
   function1 ();
}
int main (){
   function2 ();
   return 0;
}

Đầu ra

function2
function1

Giải thích - Ở đây, chúng ta đã sử dụng phương thức __func__ để trả về tên của các hàm được gọi. Mã định danh trả về tên của hàm mà nó được gọi. Cả hai câu lệnh in được gọi cho __func__ để tham chiếu phương thức riêng của nó.

Điều này được xác định hoạt động trên ngay cả phương pháp chính. Ví dụ,

Ví dụ

#include <stdio.h>
int main (){
   printf ("%s\n", __func__);
   return 0;
}

Đầu ra

main

Nhưng điều này không thể được ghi đè, tức là __func__ chỉ được dành riêng cho tên hàm. Sử dụng nó để lưu trữ bất kỳ thứ gì khác sẽ trả về lỗi.

Hãy xem

Ví dụ

#include <stdio.h>
int __func__ = 123;
int main (){
   printf ("%s\n", __func__);
   return 0;
}

Đầu ra

error

Cũng có những hàm tương tự khác trong ngôn ngữ lập trình C thực hiện công việc nhận dạng tương tự. Một số là

__File__ - trả lại tên của tệp hiện tại.

__LINE__ - trả về số dòng hiện tại.

Cho phép xem mã để hiển thị việc triển khai

Ví dụ

#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;
}

Đầu ra

The function: function1 is in line: 3 of the file :main.c

Giải thích - đây là một số hàm chung có thể hữu ích vì chúng tôi đã thu thập thông tin về tên tệp, dòng mã và hàm hiện đang được gọi bằng cách sử dụng số nhận dạng __func __, __ LINE __, __ FILE__.