Я включаю заголовок cl2.hpp в несколько файлов в моем проекте, и это вызвало ошибку множественного определения, и я не знаю, как ее исправить.
Главным образом, потому что я не знаю, в каких случаях нужен __attribute__((weak))
или как его использовать. Кто-нибудь может мне помочь с этим ??
Также я не знаю, является ли хорошей идеей удалить строки, которые используют __attribute__((weak))
, или я должен использовать другой модификатор?
В примере:
# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak))
class Device : public detail::Wrapper<cl_device_id>
{
private:
static std::once_flag default_initialized_;
static Device default_;
static cl_int default_error_;
//More code
}
CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_;
CL_HPP_DEFINE_STATIC_MEMBER_ Device Device::default_;
CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS;
class Platform : public detail::Wrapper<cl_platform_id>
{
private:
static std::once_flag default_initialized_;
static Platform default_;
static cl_int default_error_;
//More code
}
CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_;
CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_;
CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS;