C++11 “什么是”呢;“回写”;在C++;为了Arduino?
在我使用的库中,有一个WriteCallback类型。我不知道它是什么,我在任何地方都找不到它 有人能给我解释一下什么是回写吗?它是C++中的原生函数还是类型?< /P> .h文件C++11 “什么是”呢;“回写”;在C++;为了Arduino?,c++11,arduino,C++11,Arduino,在我使用的库中,有一个WriteCallback类型。我不知道它是什么,我在任何地方都找不到它 有人能给我解释一下什么是回写吗?它是C++中的原生函数还是类型?< /P> .h文件 #if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" #else #include "WConstants.h" #endif typedef void (*WriteCallback) (const byte wha
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WConstants.h"
#endif
typedef void (*WriteCallback) (const byte what); // send a byte to serial port
typedef int (*AvailableCallback) (); // return number of bytes available
typedef int (*ReadCallback) (); // read a byte from serial port
void sendMsg (WriteCallback fSend,
const byte * data, const byte length);
byte recvMsg (AvailableCallback fAvailable, ReadCallback fRead,
byte * data, const byte length,
unsigned long timeout = 500);
typedef void(*WriteCallback)(常量字节what)
定义一个类型,该类型接受一个常量字节
,并返回一个无效
。它用于轻松使用函数指针。正如使用typedef
定义uint8\t
一样:typedef无符号字符uint8\t代码>用作8位宽度变量的简单速记
一个示例用法是:
typedef void (*WriteCallback) (const byte what);
void sendMsg (WriteCallback fSend, const byte * data, const byte length);
void callbackfunction(const byte what) { /*do stuff*/ }
通过函数调用:
sendMsg(&callbackfunction,0);
在内部,sendMsg
将调用fSend
变量所指向的函数,在本例中,该变量是callbackfunction
使用此typedef
可以轻松定义函数指针,并根据示例切换使用的写回调
Writecallback funcPtr;
void switchCallback(){
static int tmp = 0;
if(tmp)
funcPtr = &writecallbackA;
else
funcPtr = &writecallbackB;
tmp = (tmp) ? 0 : 1;
}
上述用法比以下用法更易于阅读和理解:
void (*fun_ptr) (const byte what);
&callbackfunction
定义函数指针。typedef定义了一个函数指针类型。简单地说,这是一个指向一个函数的指针,该函数将常量字节作为唯一的参数。这主要用于传递将用作回调的函数。快看一眼