Нет, вы не можете этого сделать. Вы можете использовать эти определения типов только для указателей на функции. Вы можете определить только тип функции, как Storyteller в своем ответе. Но, как вы можете видеть, это не делает вещи лучше. Мое решение тоже не подходит.
Используйте макрос (нет, не делайте этого)
Единственное, что вы можете сделать, но я бы настоятельно рекомендовал это сделать, это использовать макрос:
#define f(fname) BOOL fname (void)
f(foo) {
return 1;
}
Выше приведена функция foo
, которая принимает нулевые аргументы и возвращает BOOL
. Это придет с большим количеством ограничений, хотя. Если вы хотите поддержать аргументы, вы можете сделать что-то вроде этого:
#define binary_bool(fname, arg1, arg2) BOOL fname (arg1, arg2)
binary_bool(equals,x,y) {
return x==y;
}
Опять же, я советую против этого. Я просто показываю, что нечто подобное тому, что вы хотите, теоретически возможно. Подобные макросы часто усложняют отладку.
TL; DR
Нет, вы не можете сделать это хорошим способом в C