То, что, по-видимому, делает ваш код, вызывает функцию, на которую указывает blah
, затем пытается преобразовать возвращаемое значение void
в int *
, что, конечно, не может быть сделано.
Вам нужно привести указатель функции перед вызовом функции.Вероятно, это проще сделать в отдельном выражении, но вы можете сделать это в вызове printf, как вы и просили:
printf( "%d\n" , ((int (*)())blah)() );