shared_ptr, macro IO