Ответ на текущий вопрос
Разница в том, что они делают две совершенно разные вещи!
Примечание: вы не говорите нам, что H
так что невозможно ответить на вопрос с уверенностью.Но применяются общие принципы.
Для того чтобы первый случай был разумным кодом, H
должен быть указателем (возможно, напечатанным как void*
?) На экземпляр fftw_complex
.Вы должны сделать это, чтобы сообщить компилятору, что H
действительно fftw_complex*
, поэтому вы можете использовать его.
Чтобы второй случай был разумным кодом, H
должен быть экземпляромкласс с макетом памяти, идентичным классу fftw_complex
.Я не могу придумать вескую причину поставить себя в такую ситуацию, это очень неестественно.Исходя из этого, и поскольку вы не предоставляете нам информацию относительно H
, я думаю, что это почти наверняка ошибка.
Оригинальный ответ
Основное отличие заключается вчто во втором случае вы можете искать в своем исходном коде reinterpret_cast
(и, надеюсь, убедиться, что каждое использование четко документировано и является необходимым злом).
Однако, если вы преобразуете из void*
в другой указательвведите (это здесь?), тогда вместо него предпочтительнее использовать static_cast
(который также можно легко найти).