GCC拾遗——内部函数与__func__

今天瞎翻了一下GCC的手册,发现了这两个好玩儿的东西。一个是Nested function,就是gcc允许将一个函数定义在另一个函数的内部:

double  foo( double  a,  double  b) {
    
double square(double z){
        
return z*z;
    }

    printf(
"Function: %s ",__func__);
    
return square(a)+square(b);
}

 当然像上面的定义方式,foo的外面是无法使用square的。经试验,发现还可以在square函数里面定义函数,至于最大能到多少层我现在还不大清楚。

另一个有意思的是__func__,说白了就是代表一个字符串,而这个字符串的值正是它所在的函数名。例如下面这个程序会输出“main”。

int  main() {
    printf(
"%s ",__func__);
    
return 0;
}

最后要说的是,__func__是C99标准的一部分,而nested function不属于标准,且不被GNU C++支持(只被GNU C)支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值