Рекомендуется, чтобы реализации не предоставляли такой запрос, потому что это нарушило бы использование смешанного уровня проверки.
В нынешнем виде нет ничего формального в том, чтобы строить библиотеку под одним уровнем проверки и связывать ее с кодом, созданным под другим. Однако, если код может легко запросить, какой уровень проверки доступен, это потенциально может нарушить этот вариант использования. Такой запрос может использоваться для воздействия на ABI типов и так далее Если библиотека имеет такой интерфейс, то вы должны построить код потребления с тем же уровнем проверки, чтобы любые заголовки и тому подобное определяли один и тот же ABI.
Можно ли использовать такой запрос таким образом, чтобы он не влиял на ABI и интерфейсы? Конечно. Но обеспечение теста делает слишком легким , чтобы запутаться.
В текущем состоянии у библиотеки может быть свой собственный тест, #define
, который, как ожидается, будет определен при компиляции с определенным уровнем проверки или каким-либо другим. Но такое определение сейчас является частью интерфейса вашей библиотеки. Это только часть вашей документации по сборке; если люди собирают вашу библиотеку с уровнем проверки X, они должны предоставить #define
. И любой код, использующий библиотеку, созданную в таких условиях, также должен предоставлять это определение.
И это лучшая часть: код потребления не должен делиться вашим уровнем проверки . Они должны разделить ваше определение , но не фактический уровень проверки. Ваше определение принадлежит библиотеке; уровень проверки принадлежит пользователю.