Dart 编译错误 - 代码库中奇怪的代码片段

Dart compile error - Weird snippet of code in the code base

本文关键字:代码 片段 编译 错误 Dart      更新时间:2023-10-16

我在尝试编译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) 上的编译器

编译错误:

{ }内部-1intconst uint8_t {aka const unsigned char } 的转换在 C++11 中格式不正确 [ -Werror=narrowing ]

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

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