alliedmodders / metamod-source

Metamod:Source - C++ Plugin Environment and Detour Library for the Source Engine
http://www.metamodsource.net/
Other
370 stars 84 forks source link

Shut msvc #161

Closed Kenzzer closed 5 months ago

Kenzzer commented 5 months ago

If enabling compilation for x64, MSVC will complain a lot about this line *(reinterpret_cast<void**>(&mfp) + 1) = 0; https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4789

So let's hide to msvc by adding an extra variable that this is a member function pointer, so it stops screaming about it.

Edit: Just in case there's confusion why msvc isn't ignoring this part of the code despite the static if statement right above if (sizeof(mfp) == 2*sizeof(void*)) the answer is I've no idea. I did a static assert though, in the event that it evaluated to true. But no it doesn't. Msvc just decides to care about this unreachable part of the code, just because.... And I opt'd for this solution, instead of adding even more macros and ifdef.