반응형
내가 [[fallthrough]]를 사용해도 GCC가 폴 스루에 대해 경고하는 이유는 무엇입니까?
다음 코드에서는 [[fallthrough]]
C ++ 1z 의 표준 속성을 사용하여 폴스 루가 필요함을 문서화합니다.
#include <iostream>
int main() {
switch (0) {
case 0:
std::cout << "a\n";
[[fallthrough]]
case 1:
std::cout << "b\n";
break;
}
}
GCC 7.1에서는 코드가 오류없이 컴파일됩니다. 그러나 컴파일러는 여전히 오류에 대해 경고합니다.
warning: this statement may fall through [-Wimplicit-fallthrough=]
std::cout << "a\n";
~~~~~~~~~~^~~~~~~~
왜?
속성 뒤에 세미콜론이 없습니다.
case 0:
std::cout << "a\n";
[[fallthrough]];
// ^
case 1:
[[fallthrough]]
속성은 빈 문 (참조에 적용되는 P0188R1을 ). 현재 Clang 트렁크 는이 경우 유용한 오류를 제공합니다 .
error: fallthrough attribute is only allowed on empty statements
[[fallthrough]]
^
note: did you forget ';'?
[[fallthrough]]
^
;
반응형
'Development Tip' 카테고리의 다른 글
Python 코드의 들여 쓰기를 중괄호로 변환하는 방법이 있습니까? (0) | 2020.10.05 |
---|---|
ASP MVC : IController Dispose ()는 언제 호출됩니까? (0) | 2020.10.05 |
PHP에서 효율적인 JPEG 이미지 크기 조정 (0) | 2020.10.05 |
Chrome JavaScript 개발자 콘솔 : 줄 바꿈없이 console.log ()를 호출 할 수 있나요? (0) | 2020.10.05 |
Jenkins 파이프 라인 스크립트에서 @NonCPS의 효과는 무엇입니까? (0) | 2020.10.05 |