C中的预定义标识符__func__

标识符是在编程中为实体指定的名称,以在程序中进行标识。

通常,标识符是由程序员创建的以便有效工作,但是在编程中内置了一些预定义的标识符。例如,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__方法来返回被调用函数的名称。标识符返回调用它的函数的名称。这两个print语句均要求__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编程语言中还有其他类似的功能,它们也可以完成类似的识别工作。有些是

__File__-返回当前文件的名称。

__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__标识符调用的文件名,代码行和函数的信息。