typedef void (*WriteCallback) (const byte what);
определяет указатель функции тип , который принимает const byte
и возвращает void
.Он используется для простого использования указателей на функции.Точно так же, как uint8_t
определяется с использованием typedef
как: typedef unsigned char 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);