add C++ guard