Первая проблема с вашим определением заключается в том, что писать static static
не имеет смысла. Это связано с тем, что static
является классификатором и не является частью этого типа. Вторая проблема заключается в том, что вам нужен список параметров для обеих функций.
Вы можете написать это:
int (*compare_function(void))(int a) {
...
}
Или вы можете сделать compare_function
статические:
static int (*compare_function(void))(int a) {
...
}
Любой из них будет возвращать объект типа int (*)(int a)
который является то, что вы хотите. Чтобы уточнить, без использования typedef
, это единственный способ, чтобы написать функцию, которая возвращает функцию (не считая someo
Запись static static
не имеет смысла Представьте себе писать что-то вроде:.
// no
typedef static int SInt;
Это просто Безразлично» т имеет никакого смысла, либо, поэтому, когда у вас есть переменная:.
static int (*compare_function)(int a);
Тип является int (*)(int)
, а длительность хранения статична, а связь является внутренним
Будет ли это работать? Попробуйте и сообщите нам .. –
@EugeneSh. Извините, что я имел в виду, это правильный/идиоматический способ сделать это? –
Почему бы не использовать 'typedef'? Если это часть интерфейса, правильным способом было бы использовать его. –