![]() |
1
4
就像C++一样,d中的枚举似乎是一个“保守的整数文字”。 编辑 :太棒了,d2甚至支持 floats and strings )它的枚举器没有位置。它们只是不重要的价值观,没有同一性。
放置
就像
如果我能相信我的知识。所以,
我认为,如果你有一个本地const,编译器仍然可以像C++一样优化它,因为编译器通过查看它的范围来知道是否有人对它的地址感兴趣或者是否每个人都只需要它的值。 |
![]() |
2
4
你的实际问题;为什么EnUn/const在D中与C++一样,似乎没有答案。遗憾的是,这种选择没有任何好的理由。我相信这只是C++中的一种无意的副作用,它变成了阿德的事实模式。在D,同样的模式是需要的,Walter Bright决定它应该像C++那样做,这样来自那个地方的人会知道该做什么……事实上,在这个愚蠢的决定之前,这个用例使用了关键字manifest而不是枚举。 |
![]() |
3
3
我认为一个好的编译器/链接器仍然应该删除常量。只是对于枚举,它实际上是在规范中得到保证的,区别主要是语义问题。(还要记住2.0还没有完成) |
![]() |
4
2
真正的目的是
|
![]() |
5
1
听起来枚举值将在表达式中“inline”使用,因为const将实际占用存储空间,并且引用它的任何表达式都将从内存存储中加载该值。 这听起来类似于C中const与readonly之间的区别。前者是编译时常量,后者是运行时常量。这肯定会影响程序集的版本控制(因为引用只读的程序集在编译时将收到一个副本,并且如果使用其他值重新生成引用的程序集,则不会对值进行更改)。 |