Я читав, що перетворення покажчика функції на покажчик даних і навпаки працює на більшості платформ, але не гарантовано. Чому це так? Чи не повинні обидва бути просто адресами в основну пам'ять і тому бути сумісними?
void. Перетворення покажчика функції в void *не повинно змінювати подання. void *Значення в результаті такого перетворення може бути перетворена назад у вихідний тип покажчика функції, використовуючи явне приведення, без втрати інформації. Примітка : Стандарт ISO C цього не вимагає, але він необхідний для відповідності POSIX.
dlsym()- зверніть увагу на кінець розділу "Використання програми", де зазначено: Зверніть увагу, що перетворення з void *вказівника на функціональний покажчик, як у: fptr = (int (*)(int))dlsym(handle, "my_function"); не визначається стандартом ISO C. Цей стандарт вимагає, щоб це перетворення працювало коректно щодо відповідних реалізацій.