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
", __func__); } void function2 (void){    printf ("%s
", __func__);    function1 (); } int main (){    function2 ();    return 0; }

输出

function2
function1

解释 - 在这里,我们使用了 __func__ 方法来返回被调用的函数的名称。该标识符返回调用它的函数的名称。两个 print 语句都调用了 __func__ 以进行其自身方法的引用。

此标识符甚至适用于 main 方法。例如,

示例

实时演示

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

输出

main

但是它不能被重写,即 __func__ 仅保留用于函数名称。使用它来存储任何其他内容将返回错误。

让我们看看

示例

实时演示

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

输出

error

C 编程语言中还有其他类似的函数执行类似的识别工作。一些是

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

__LINE__ - 返回当前行的行号。

让我们看一段代码来展示实现

示例

实时演示

#include <stdio.h>
void function1(){
   printf("The function: %s is in line: %d of the file :%s
", __func__,__LINE__,__FILE__); } int main(){    function1();    return 0; }

输出

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

解释 - 这些是一些通用的函数,因为我们已经收集了有关文件名、代码行以及当前使用 __func__、__LINE__、__FILE__ 标识符调用的函数的信息,它们可能很有用。

更新于: 2020年2月4日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告