gpt4 book ai didi

c - 在编译单元之间传递函数指针时有什么陷阱吗?

转载 作者:行者123 更新时间:2023-12-02 01:43:26 25 4
gpt4 key购买 nike

我问是因为我正在使用 PIC 微 Controller 异步操作硬件并将函数指针实现为回调机制会有好处。

例如,i2C 库接受读写“作业”,并在硬件资源可用时(以及用户勾选 i2C 软件状态机时)顺序执行每个“作业”。根据 i2C 库的实现者使用情况,他们可能希望在返回数据之前对其进行操作(位掩码、设置标志等),这就是我考虑添加 i2C 回调机制的地方。

用户将传递一个作业,其中包括一个指向调用编译单元的回调函数。这是允许的吗?如果允许的话,有什么需要注意的地方吗?

最佳答案

一直在编译单元之间传递指针。例如,标准库中的 free() 当然是单独编译的,但它的参数是一个指针。

在许多项目中,包括 Linux 内核,经常使用编译单元之间的回调。

主要是使用公共(public)头文件来定义共享变量,进行函数定义等。如果您使用 long 指针定义一个函数,但使用指定 char 指针的声明调用它,那么您将进入未定义行为领域。

还要注意可能会改变变量大小、默认包装等的编译器标志。

关于c - 在编译单元之间传递函数指针时有什么陷阱吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27155066/

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