The actual function is named with a triple underscore and this macro is there for casting the `P` pointer to the function (i.e. the `void **` memory location of the pointer to be checked and updated). The issue I was trying to work around is that MSVC doesn't consider `foo **` to be compatible with `void **` so an explicit cast is required. I'd love to get rid of this if you have a better way to do it!!!