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)上的编译器

编译错误:

在C ++ 11 [ ] -1_intconst uint8_tconst unsigned char{ }-Werror=narrowing

4

1 回答 1

1

那不是编译器错误,那是编译器警告。您可能正在使用-Werror它将所有警告变成错误。

您还可能注意到EXPECT_EQ(255, str8.CharAt(7));正在测试 -1 是否为 255。

于 2012-06-04T03:09:38.170 回答