build as C++
add C++ guards
add c++ guards