预处理器“宏功能”与功能指针 – 最佳实践?
发布时间:2020-12-16 03:36:17 所属栏目:百科 来源:网络整理
导读:我最近在C中开始了一个小型的个人项目(RGB值到BGR值转换程序),我意识到从RGB转换为BGR的功能不仅可以执行转换,还可以执行转换.显然这意味着我真的不需要两个函数rgb2bgr和bgr2rgb.但是,使用函数指针而不是宏是否重要?例如: int rgb2bgr (const int rgb);/*
我最近在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)) 我并不一定会寻求改变执行效率,因为它更多是出于好奇心的主观问题.我很清楚,使用任何一种方法都不会丢失或获得类型安全.功能指针只是一个方便还是有更多的实际好处可以获得我不知道的? 解决方法
另一种可能性是让第二个函数调用第一个并让编译器担心优化它(通过内联或生成尾调用).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |