way 더 읽기 쉽기 때문에 새로운 C++ 0x 유형의 안전한 enum에 C++ 유형 안전 psuedo-enums를 끔찍한 엉터리로 리팩터링했습니다. 어쨌든, 난 내 보낸 클래스에서 사용, 그래서 명시 적으로 내보낼 수 표시 : 유형이 이미g ++ C++ 0x enum 클래스 컴파일러 경고
을 정의 후 무시유형 속성 : ++ g으로이 컴파일
이enum class __attribute__((visibility("default"))) MyEnum : unsigned int { One = 1, Two = 2 };
다음과 같은 경고를 얻을 수
: 내가 아는 한, 그 경고가 같은 실제 실수를 방지하기위한 것입니다, 이후
이것은 매우 이상한 것 같다 10
enum class
의 정의에서 가시성 속성 만 표시 했으므로 분명히 그 일을하지는 않습니다. 다시 정의하거나 다른 곳에서 선언 할 필요가 없습니다. (이 오류를 단일 파일).
궁극적으로이 코드를 실제로 만들 수는 없습니다. 값을 변경하고 공유 라이브러리를 다시 컴파일하지 않고 소비자를 다시 컴파일하면 소비자가 새로운 값과 공유 라이브러리는 그들과 함께 무엇을 해야할지 잘 모릅니다. (처음에는 그렇게 생각하지는 않지만).
나는 너무 성급한가? 이것은 무시해도됩니까? 나는 그렇게 생각한다. 그러나 동시에,이 오류가 발생하면 Werror
으로 컴파일하는 것을 막을 수있어서 불편하다. 나는이 문제가 사라지는 것을 정말로보고 싶다.
I을 버그를 GCC의 Bugzilla에보고했다. –
@TravisGockel : 저 티켓을 알려주시겠습니까? 아래에 해결 방법을 게시했습니다. – erenon
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43407 – vpicaver