预处理器“宏功能”与功能指针 – 最佳实践?

前端之家收集整理的这篇文章主要介绍了预处理器“宏功能”与功能指针 – 最佳实践?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近在C中开始了一个小型的个人项目(RGB值到BGR值转换程序),我意识到从RGB转换为BGR的功能不仅可以执行转换,还可以执行转换.显然这意味着我真的不需要两个函数rgb2bgr和bgr2rgb.但是,使用函数指针而不是宏是否重要?例如:
int rgb2bgr (const int rgb);

/*
 * Should I do this because it allows the compiler to issue
 * appropriate error messages using the proper function name,* not to mention possible debugging benefits?
 */
int (*bgr2rgb) (const int bgr) = rgb2bgr;

/*
 * Or should I do this since it is merely a convenience
 * and they're really the same function anyway?
 */
#define bgr2rgb(bgr) (rgb2bgr (bgr))

我并不一定会寻求改变执行效率,因为它更多是出于好奇心的主观问题.我很清楚,使用任何一种方法不会丢失或获得类型安全.功能指针只是一个方便还是有更多的实际好处可以获得我不知道的?

解决方法

另一种可能性是让第二个函数调用第一个并让编译器担心优化它(通过内联或生成调用).

猜你在找的C&C++相关文章