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

我最近在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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...