change initializer to work with msvc

TODO: make sure this does not break under msys
more extern "c" cleanup