added __cplusplus extern "C".