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