[C/C++]如何给Lambda(匿名)函数命名?
2014-10-13 11:37
155 查看
C++11增加了Lambda(匿名)函数,在实际使用中发现对匿名函数命名是很有必要的(增强代码阅读性)。
本文介绍一种优雅的方法实现对匿名函数的命名。
我发现,任何增强代码阅读性而且又不违反编译器规则的方式都是定义空定义,比如:
沿着这条思路很容易得出为匿名函数命名的方法,定义一个有意义的空宏,如下:
选择$这个符号是因为它足够简洁,当然不排除某些JavaScript框架的影响。接下来你的匿名函数就可以这样来使用了。
怎么样,是不是很酷呢?
本文介绍一种优雅的方法实现对匿名函数的命名。
我发现,任何增强代码阅读性而且又不违反编译器规则的方式都是定义空定义,比如:
/** * 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; } }()) { }
怎么样,是不是很酷呢?
相关文章推荐
- java中如何使用JNI调用C++写的函数
- 如何在C/C++语言中调用 sqlite 的函数
- python嵌入C++------ boost.python如何在C++中调用含有不定长参数tuple变量和关键字参数dict变量的函数
- C++匿名命名空间
- 抱歉,没分了!!!请教linux下,用C/C++编程,如何知道我要实现某一功能需要用到什么函数
- C++如何处理内联虚函数
- C++ 函数中如何接收数量不定的函数参数
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- 在VC6.0中创建和使用静态链接库&amp;amp;&amp;amp;C如何调用C++ 成员函数
- JAVA里如何调用C/C++的DLL里的函数
- 在c#中如何提供c/c++中的函数指针的功能
- 在C/C++中如何使函数返回数组
- 如何在C++中实现类似Scanf的变参个数函数
- C++ 0x 之 Lambda:贤妻与娇娃,你娶谁当老婆?听 FP 如何点化 C++
- 在C++中使用Lambda函数提高代码性能
- C++函数如何操作堆栈指针esp
- C++中如何调用C里面的函数
- 如何动态加载c++函数和类
- 如何在c/c++中,做一个可以接收任意二维数组的函数接口,并在函数中能以下标的形式引用元素
- 如何调用C++函数?