Существует библиотека C (которую я не могу изменить), которая поддерживает функцию обратного вызова типа
void (*callback)(void *appContext, int eventid)
. Я хочу установить функцию C ++ в качестве функции обратного вызова.
В частности, у меня есть следующие вопросы:
Нужно ли мне объявлять функцию обратного вызова в блоке «extern C»
?
Должна ли функция-член быть статической, чтобы быть функцией обратного вызова? Можно ли использовать нестатическую функцию-член? Если да, то как? И когда рекомендуется использовать нестатическую функцию-член?
Имеет ли значение, является функция функцией шаблона или нет?
Имеет ли функция стиля C, не являющаяся классом, какие-либо преимущества перед функцией-членом класса?
Я пробую эти варианты на старом компиляторе VC ++, который не поддерживает последний стандарт C ++. Но код должен быть независимым от платформы и работать с большинством компиляторов C ++. Я хочу знать, что рекомендуется делать с обратными вызовами?