我在尝试编译 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
_int
const uint8_t
const unsigned char
{ }
-Werror=narrowing