Я работаю через Advanced Mac OS X. Книга программирования и одно упражнение заставила меня споткнуться.Упростите объявление ссылки на блок с помощью typedefs
Использование определения типов для упрощения следующего блока ссылочного заявления:
int (^(*(^get_block_factory_funcptr)(void))(int))(void);
Вот как я понимаю заявление:
Функция не принимают аргументы, возвращает блок, который возвращает указатель недействительного, который указатель на функцию, которая принимает int для аргумента и возвращает блок, который не имеет аргументов, возвращает int.
Теперь, учитывая, что у меня есть эти 2 Определения типов
typedef void *(^get_block_factory_funcptr)(void);
typedef int (^myBlock(int))(void);
Однако я понятия не имею, как объединить их в одной декларации, любая помощь приветствуется
Учитывая то, что вы вывесили я должен быть в состоянии сделать следующее: 'FactoryFuncPtr х;', а затем сделать: 'Int (^ (* (^ get_block_factory_funcptr) (аннулируются)) (INT)) (аннулируются) = х; '. Но это приводит к ошибке о несовместимом назначении. – rmaddy
@rmaddy 'get_block_factory_funcptr' - это блок. 'x' является указателем на функцию. Попробуйте 'x = get_block_factory_funcptr();' – Darren
Я думал, что идея состоит в том, что с помощью typedefs вы можете назначить один для другого. Можете ли вы завершить свой ответ, чтобы показать, как типизация фактически эквивалентна оригинальной декларации? – rmaddy