我碰到这个代码片段来试图编译达特前沿基础代码:飞镖编译错误 - 的代码片段怪异在
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)
编译错误:
narrowing conversion of
-1
fromint
toconst uint8_t
{akaconst unsigned char
} inside{ }
is ill-formed in C++11 [-Werror=narrowing
]
符号的数字“包装过度”时,他们的范围之外,因此'-1'是说255不知道为什么,只是另一种方式你会得到一个编译器错误。 – Pubby
不确定为什么255使用一次,但是-1也使用一次。 – chris
请发布编译器错误。 –