编译时无法读取结构体枚举

标签 struct enums d dmd

我有一个结构枚举,我使用它的值来定义数组大小;然而,编译器提示结构体的值在编译时未知。

module main;

struct Point3D {
        ubyte x;
        ubyte y;
        ubyte z;
}

void main() {
        enum Point3D point = {x:1, y:1, z:1};
        int testArray[point.x][point.y][point.z]; // ERRORS - X Cannot be read at compile time. 
}

编译器告诉我它无法在编译时读取 x (它甚至告诉我 4 次)。这是为什么?

最佳答案

看起来像一个编译器错误...您可以通过将值保存到中间枚举来解决它:

enum Point3D!ubyte BlobSize = {x:32, y:32, z:32};
enum BlobX = BlobSize.x;
enum BlobY = BlobSize.y;
enum BlobZ = BlobSize.z;
blobcontents[BlobX][BlobY][BlobZ] data;

关于编译时无法读取结构体枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22236296/

相关文章:

Typescript Map<enum, set<enum>> "No overload matches this call",但我不明白为什么?

Vim OmniComplete for D

d - 链接 libuv

c++ - C++如何从链表中选择随机项目

c - 使用struct和strcpy,程序崩溃

C 错误解引用指向不完整类型链表 dic 的指针

templates - D 中的结构体和元组模板参数

c++ - 使用结构作为库的全局

java - Java 编译时生成枚举

ruby-on-rails - 检查来自另一个对象的 ruby​​ 枚举