이 질문은 static_assert와 유사한 기능을 하는 "static_warning" 구문을 구현할 가능성에 대해 자세히 설명합니다. 그러나 컴파일을 즉시 중단시키는 오류가 아니라 컴파일 중에 경고만 생성합니다. 탐구에 대해 자세히 알아보고 질문에 답해 보겠습니다.
Michael E의 의견에서 영감을 받은 강력한 솔루션은 원하는 기능을 충족하도록 매크로를 수정하는 것입니다.
<code class="c++">#define STATIC_WARNING(cond, msg) struct PP_CAT(static_warning,__LINE__) { \ DEPRECATE(void _(const ::detail::false_type&),msg) {}; \ void _(const ::detail::true_type& ) {}; \ PP_CAT(static_warning,__LINE__)() {_(::detail::converter<(cond)>());} \ }</code>
이 코드는 DEPRECATE 매크로를 사용하여 특정 메서드를 더 이상 사용되지 않음으로 표시하고 프로그램 흐름의 특정 지점에 경고를 전달합니다.
STATIC_WARNING 매크로:
<code class="c++">STATIC_WARNING(1 == 2, "Failed with 1 and 2");</code>결과적절한 경고 수준으로 컴파일할 때 컴파일러는 의도한 동작과 유사한 경고 메시지를 표시합니다. "'_'는 더 이상 사용되지 않습니다....
위 내용은 `static_assert`와 유사하지만 오류 대신 경고가 있는 \"정적 경고\"를 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!