Как обнаружить режим компиляции C ++ 20?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как обнаружить режим компиляции C ++ 20?

Сообщение Anonymous »

При компиляции моей программы с использованием последней версии библиотеки OpenVDB от Clang в режиме C++20 я получаю сообщение об ошибке:

Код: Выделить всё

error: use of the 'assume' attribute is a C++23 extension
< /code>
Я вижу, что это связано с макросом openvdb_assume, условно определенным как (упрощенное): < /p>
#ifdef __has_cpp_attribute
#if __has_cpp_attribute(assume) >= 202207L
#define OPENVDB_ASSUME(...) [[assume(__VA_ARGS__)]]
#endif
#endif
#ifndef OPENVDB_ASSUME
#define OPENVDB_ASSUME(...) __builtin_assume(__VA_ARGS__)
#endif
Несмотря на условие __has_cpp_attribute (предположить)> = 202207L , макрос по -прежнему расширяется в [[предполагает]] в режиме C ++ 20. Онлайн демонстрация: https://gcc.godbolt.org/z/fey5gwc9p
Как нужно изменить условие, чтобы предотвратить его, и получить совместимый с C ++ 20 __builtin_assume (__ VA_ARG __)>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ompilation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»