我最近在C中使用了函数指针.
继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.
好吧,我认为标题足够描述(但令人困惑,抱歉).
我正在读这个库:Timer1.
在头文件中有一个指向函数的公共成员指针,如下所示:
class TimerOne
{
public:
void (*isrCallback)();
};
Run Code Online (Sandbox Code Playgroud)
存在TimerOne类的实例化对象,称为"Timer1".
Timer1调用该函数如下:
Timer1.isrCallback();
Run Code Online (Sandbox Code Playgroud)
这怎么回事?我熟悉通过使用dereference运算符通过函数指针调用函数.
例如:
(*myFunc)();
Run Code Online (Sandbox Code Playgroud)
所以我希望通过对象的上述调用更像是:
(*Timer1.isrCallback)();
Run Code Online (Sandbox Code Playgroud)
那么,通过函数指针调用函数的可接受选项是什么,作为独立的函数指针和对象的成员?
假设有一个函数指针:
void func(float a1, float a2) {
}
void (*fptr)(float, float) = &func;
Run Code Online (Sandbox Code Playgroud)
这两行之间是否有任何区别(编译和编译工作)?
(*fptr)(1,2);
fptr(1,2);
Run Code Online (Sandbox Code Playgroud)
我想第二个版本只是第一个版本的捷径,但我想确保自己.更重要的是标准行为?