小编Jam*_*s J的帖子

编译器认为枚举值从129开始

我最近开始在D中写一个国际象棋引擎.我开始编写董事会代表.在我遇到使用枚举的问题之后不久,我正在使用它们.

enum Piece : ubyte
{
  Empty,
  Pawn,
  Rook,
  Knight,
  Bishop,
  Queen,
  King
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我得到一个错误

src/board.d(69):错误:无法将int类型的表达式(129)隐式转换为byte

注意:我使用的是DMD64 D Compiler v2.068.1.我传递的标志可以在我在底部链接的github repo中的makefile中找到.

此错误打印六次.每次括号中的数字增加一次.因此它从120到134.行号69对应于Piece枚举中的Empty值.

我试图将值从0变为空,变为6,为King,但似乎编译器认为它应该由于某种原因从129开始.我已经尝试显式设置值,但它没有任何区别,编译器仍然会抛出一堆错误.

我可以尝试切换到使用整数来解决这个问题,但这仍然会让编译器认为枚举值从129开始并弄乱我正在计划使用的位操作.

如果有人能帮我弄清楚这段代码有什么问题,我将不胜感激.

完整的程序可以在这里找到

enums d dmd

2
推荐指数
1
解决办法
466
查看次数

标签 统计

d ×1

dmd ×1

enums ×1