0

Dart ブリーディング エッジをコンパイルしようとしているときに、次のコード スニペットを見つけました。

const uint8_t chars[kCharsLen] = { 1, 2, 127, 128, 192, 0, 255, -1 };
const String& str8 = String::Handle(String::New(chars, kCharsLen));
EXPECT_EQ(kCharsLen, str8.Length());
EXPECT_EQ(1, str8.CharAt(0));
EXPECT_EQ(127, str8.CharAt(2));
EXPECT_EQ(128, str8.CharAt(3));
EXPECT_EQ(0, str8.CharAt(5));
EXPECT_EQ(255, str8.CharAt(6));
EXPECT_EQ(255, str8.CharAt(7));

-1 が uint8_t に割り当てられようとするのは奇妙に思えます。しかし、コンパイラがこれをサポートしていることを確認するためのテストである可能性があるため、削除するのは気が進まない. 実際、私がこれに遭遇した理由は、Fedora 17 仮想マシン (gcc 4.7) のコンパイラーが

コンパイル エラー:

-1fromintからconst uint8_t{aka const unsigned char} 内部への縮小変換は{ }、C++11 では形式が正しくありません [ -Werror=narrowing]

4

1 に答える 1

1

これはコンパイラ エラーではなく、コンパイラの警告です。おそらく-Werror、すべての警告をエラーにするを使用しています。

EXPECT_EQ(255, str8.CharAt(7));また、-1 が 255 になることをテストしていることに気付くかもしれません。

于 2012-06-04T03:09:38.170 に答える