add support for MSVC

add cross-platform #warning macro