gpt4 book ai didi

c - 预处理器 "macro function"与函数指针 - 最佳实践?

转载 作者:太空狗 更新时间:2023-10-29 17:19:27 24 4
gpt4 key购买 nike

我最近用C开始了一个小的个人项目(RGB值到BGR值转换程序),我意识到一个从RGB到BGR转换的函数不仅可以进行转换,还可以进行反转。显然,这意味着我真的不需要 rgb2bgrbgr2rgb 这两个函数。但是,我是否使用函数指针而不是宏有关系吗?例如:

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 - 预处理器 "macro function"与函数指针 - 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com