在尝试编译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
到{ }
{aka -Werror=narrowing
}的转换变窄 最佳答案
这不是编译器错误,而是编译器警告。您可能正在使用-Werror
,它将所有警告变为错误。
您可能还会注意到EXPECT_EQ(255, str8.CharAt(7));
正在测试-1将为255。
关于c++ - Dart编译错误-代码库中的奇怪代码段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10873897/