static_warning이 있나요?
질문:
Boost가 제공하는 것으로 알려져 있습니다. "정적 경고" 기능. 그러나 이 질문의 목적은 static_assert와 유사하게 작동하지만 컴파일을 중단하는 대신 컴파일 시간에 경고를 발행하는 사용자 정의 static_warning 기능을 구현할 가능성을 구체적으로 탐색하는 것입니다.
답변:
예, GCC 또는 MSVC를 사용하여 사용자 정의 static_warning 기능을 구현하는 것이 가능합니다. 구현에서는 DEPRECATE 매크로를 활용하여 경고 표시 기능을 정의하고 일련의 중첩 매크로를 사용하여 원하는 기능을 생성합니다.
사용법:
사용자 정의 static_warning은 다음과 같이 사용하세요:
<code class="cpp">STATIC_WARNING(condition, "Warning message here");</code>
…
예를 들어, 이 코드는 경고를 발행합니다:
<code class="cpp">STATIC_WARNING(true, "This warning is intended");</code>
구현:
구현은 gewünschten 동작을 달성하기 위해 매크로를 사용합니다.
<code class="cpp">#define DEPRECATE(foo, msg) foo __attribute__((deprecated(msg))) #define STATIC_WARNING(cond, msg) ... ... struct true_type {}; struct false_type {}; template<int test> struct converter : public true_type {}; template<> struct converter<0> : public false_type {}; ... STATIC_WARNING(cond, msg) { DEPRECATE(void _(const detail::false_type&), msg) {}; void _(const detail::true_type& ) {}; PP_CAT(static_warning,__LINE__)() {_(::detail::converter<(cond)>>());} }</code>
예:
다음 코드를 고려하세요.
<code class="cpp">STATIC_WARNING(1 == 1, "This is not a warning"); STATIC_WARNING(1 != 1, "This should generate a warning");</code>
적절한 경고 수준으로 컴파일하면 두 번째 줄에서 경고가 발생합니다.
위 내용은 C에서 사용자 정의 `static_warning` 기능을 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!