Как использовать C ++ "макросы тестирования функций"? - PullRequest
0 голосов
/ 11 октября 2018

Чтобы проверить функцию, 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)?

1 Ответ

0 голосов
/ 11 октября 2018

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

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

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

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

...