_GLIBCXX_ATOMIC_BUILTINS не определено в gcc 4.4.5

У меня есть некоторый код, который я портирую, и я отследил ошибку, пропустив макрос _GLIBCXX_ATOMIC_BUILTINS

Разве более поздние версии gcc не определяют это?

Какой правильный способ обойти это?

1 ответ

В этой версии вы также захотите проверить атомарные макросы для определенного типа данных, так что вы можете сделать:

#if defined(_GLIBCXX_ATOMIC_BUILTINS_4) && !defined(_GLIBCXX_ATOMIC_BUILTINS)
#define _GLIBCXX_ATOMIC_BUILTINS
#endif

или же

#if defined(_GLIBCXX_ATOMIC_BUILTINS) || defined(_GLIBCXX_ATOMIC_BUILTINS_4)

Макросы:

/* Define if builtin atomic operations for bool are supported on this host. */
#undef _GLIBCXX_ATOMIC_BUILTINS_1

/* Define if builtin atomic operations for short are supported on this host. */
#undef _GLIBCXX_ATOMIC_BUILTINS_2

/* Define if builtin atomic operations for int are supported on this host. */
#undef _GLIBCXX_ATOMIC_BUILTINS_4

/* Define if builtin atomic operations for long long are supported on this
   host. */
#undef _GLIBCXX_ATOMIC_BUILTINS_8
Другие вопросы по тегам