gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:39:16 26 4
gpt4 key购买 nike

我最近开始用 D 编写一个国际象棋引擎。我从编写棋盘表示开始。不久之后,我遇到了用于这些片段的枚举的问题。

enum Piece : ubyte
{
Empty,
Pawn,
Rook,
Knight,
Bishop,
Queen,
King
}

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

src/board.d(69): Error: cannot implicitly convert expression (129) of type int to byte

注意:我使用的是 DMD64 D 编译器 v2.068.1。我传递的标志可以在我在底部链接的 github 存储库中的 makefile 中找到。

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

我试图让值从 0(表示空)到 6(表示国王),但似乎编译器认为出于某种原因它应该从 129 开始。我尝试过显式设置这些值,但没有任何区别,编译器仍然会抛出一堆错误。

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

如果有人能帮助我找出这段代码有什么问题,我将不胜感激。

完整的程序可以在 here 找到

最佳答案

错误消息指向错误的位置。枚举本身很好。

实际错误是Board.pieces类型错误。它应该是ubyte[64],而不是byte[64]

当你稍后try to assign values that have the 8th bit set失败,因为 byte 的范围太小。

请通过 issues.dlang.org 提交问题.

关于enums - 编译器认为枚举值从 129 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com