[C/C++]如何给Lambda(匿名)函数命名?

C++11增加了Lambda(匿名)函数,在实际使用中发现对匿名函数命名是很有必要的(增强代码阅读性)。

本文介绍一种优雅的方法实现对匿名函数的命名。

我发现,任何增强代码阅读性而且又不违反编译器规则的方式都是定义空定义,比如:

/**
 * MFC框架内标识消息处理函数的宏,没有实际意义,
 * 但是一眼就能看出这是消息处理函数。
 */
 #ifndef afx_msg
 #define afx_msg         // intentional placeholder
 #endif

/**

* IN 和 OUT 宏用于标识函数参数的传入方向,有些语言(C#)

* 直接支持 in 和 out 关键字,增强阅读性。

*/

#ifndef IN
#define IN
#endif

#ifndef OUT
#define OUT
#endif

沿着这条思路很容易得出为匿名函数命名的方法,定义一个有意义的空宏,如下:

/**
* 定义匿名函数的名称
*/
#define $(NAME)

选择$这个符号是因为它足够简洁,当然不排除某些JavaScript框架的影响。接下来你的匿名函数就可以这样来使用了。

if ([&]$(TestIfDigitalZoom)()->bool{
if (type == RecalcRect_FitFull || type == RecalcRect_FitBest)
{
return true;
}

if (iZoomZt > 20 || iZoomZt < 0)
{
return false;
}

/* 变化后的缩放,是否为机器缩放 */
if (fZoom * RectCalcor::_ZoomKey <= 1.0f && fZoom >= imgSize.Width * 1.0f / capSize.Width * RectCalcor::_ZoomKey)
{
return true;
}
else
{
return false;
}
}())
{
}

怎么样,是不是很酷呢?


转载于:https://my.oschina.net/lvan100/blog/330076

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值