add __cplusplus macro