微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我最近在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))

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

解决方法

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

原文地址:https://www.jb51.cc/c/110906.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐