日記

内容の正しさは保証しません

wxWidgetsをビルドしたい

まだ出来てない。
コンパイラはmsys2から入れたclang5.0.1
wxWidgetsはstableと書いてある3.0.4

詰まったのは次の箇所:

    case 0xfffffd9f: // readystatechange in IActiveMovie2 and IMediaPlayer
./src/msw/mediactrl_am.cpp:2234:10: error: case value evaluates to 4294966687, which cannot be narrowed to type 'DISPID' (aka 'long') [-Wc++11-narrowing]
    case 0xfffffd9f: // readystatechange in IActiveMovie2 and IMediaPlayer

clang++では、-std=c++11(以降)でコンパイルするとcaseに0x80000000以上を書いたときエラーになる。

int main()
{
	long a; //longは4バイト

	switch (a) {
	case 0xffffffff:
		break;
	}
	a = 0xffffffff;
	return 0;
}

でも代入はエラーにならない。
しかもg++ ではどれもコンパイルが通る。なぜだ
対処法はあるのだろうか(募集中)