【问题标题】:Usage of extern functions for portability使用外部函数实现可移植性
【发布时间】:2020-06-17 15:41:14
【问题描述】:

我见过一些用于执行特殊工作(例如控制 SPI 设备)的微控制器库。它们使用上下文指针定义外部函数,用于用户必须实现的字节发送和引脚配置。这是一个很好的做法吗?

其他一些在其上下文中使用函数指针,但这些指针可能非常昂贵,并且由于参数传递限制,一些较旧的编译器不允许具有大量参数的函数指针(我记得 C51 编译器中的这一点)

【问题讨论】:

  • 在我看来更好的是使用函数指针,因为它可以为 NULL,如果用户不想使用,则不必执行此操作。必须实施是错误的想法。函数指针中的参数不必很多,可以换成scructure或者void*
  • “外部函数”是什么意思?具有extern 链接的函数?一个全局的函数指针?能给个代码示例吗?

标签: c extern


【解决方案1】:

这取决于您想要达到的目标。使用需要由更高层实现的外部函数是使用回调的一种非常有效的方法。特别是当它们被频繁调用时,它们的性能损失比需要取消引用的函数指针低。但是,指向回调函数的函数指针更加灵活,因为您可以允许它们为空。此外,可以在执行时更改它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多