gcc — Как использовать C ++ & quot; макросы функциональных тестов & quot ;?

Чтобы проверить функцию, cppreference упоминает эти макросы тестирования функции:
ссылка на сайт.

Если функция присутствует в компиляторе, макрос определяется. Но я не понимаю, почему, если они определены, они определены для чего-то вроде 201606который я считаю версия C ++, а не компилятора.

Например, я использую очень свежую версию GCC с -std=c++17 для функции __cpp_lib_hardware_interference_size, Макрос не определен, что, как я понимаю, означает, что GCC не имеет этой функции, несмотря на попытку 8.2.1 с переключателем c ++ 17 (и c ++ 2a). В этом случае, какова значимость документированного значения:

__cpp_lib_hardware_interference_size 201703

(внутри ссылки cppreference)?

3

Решение

На основе cppreference.com, это говорит:

Следующие макросы расширяются до числового значения, соответствующего
год и месяц, когда функция была включена в рабочий
проект.

Когда функция значительно изменяется, макрос будет обновлен
соответственно.

Таким образом, вы можете проверить, существует ли функция, проверяя, определен ли макрос. Или вы можете проверить версию функции на основе значения макроса.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]