Недавно я попытался использовать параметр / Wall Visual C ++ , чтобы включить все предупреждения, и обнаружил, что следующий код:
typedef BOOL ( WINAPI * TIsWow64ProcessFunction )( HANDLE, BOOL* );
TIsWow64ProcessFunction isWow64ProcessFunction = reinterpret_cast<TIsWow64ProcessFunction> (
::GetProcAddress( kernel32DllHandle, "IsWow64Process" ) );
порожден C4191 :
warning C4191: 'reinterpret_cast' : unsafe conversion from 'FARPROC' to 'TIsWow64ProcessFunction'
Calling this function through the result pointer may cause your program to fail
Если я использую приведение в стиле C, появляется то же самое предупреждение, но теперь оно упоминает «приведение типа» вместо «reinterpret_cast».
То же предупреждение повторяется для любого случая, который я вызываюGetProcAddress()
и преобразовать его возвращаемое значение в некоторый используемый указатель на функцию.
Как мне обратиться к этим предупреждениям?Нужно ли вносить изменения в мой код?