Указатели могут быть объявлены как указывающие на изменяемые (неконстантные) данные или указатель на постоянные данные.
Указатели могут быть определены так, чтобы указывать на функцию.
Мои коллеги и я обсуждали использование "const" с указателями, и возник вопрос о том, как использовать const
с указателями функций.
Вот несколько вопросов:
- В чем смысл указателя на постоянную функцию по сравнению с указатель на непостоянную функцию?
- Может ли функция быть const?
- Может ли функция быть непостоянной (изменчивой)?
- Каков правильный (безопасный) синтаксис для передачи указателя функции?
Редактировать 1: Синтаксис указателя функций
typedef void (*Function_Pointer)(void); // Pointer to void function returning void.
void function_a(Function_Pointer p_func); // Example 1.
void function_b(const Function_Pointer p_func); // Example 2.
void function_c(Function_Pointer const p_func); // Example 3.
void function_d(const Function_Pointer const p_func); // Example 4.
Вышеприведенные объявления являются примерами обработки указателя функции, такого как указатель на собственный тип.
Данные, переменная или указатель памяти позволяют использовать приведенные выше комбинации.
Таким образом, вопросы таковы: может ли указатель функции иметь одни и те же комбинации и что подразумевается под указателем на функцию const (например, пример 2)?