原文
更改编译器
禁止使用-preview=fixImmutableConv
从const(void)[]
复制到void[]
如果const(void)[]
数据包含尾常
指针,则复制
到void[]
,随后可能会违反常
数据:
void f(int*[] a, const int*[] b)
{void[] va = a;const void[] vb = b;va[] = vb[]; //用`常`指针填充*a[0] = 0; //更改常数据
}
不再允许用-preview=fixImmutableConv
开关复制vb
数据到va
.
现在按十六进制串对待导入式
虽然导入
式的类型
为串
,但也用它们
来嵌入二进制文件
.通过按十六进制串
对待它们,会隐式
按整型
数组而不是符
数组,来转换它们
.
//以前,需要一个转换:
immutable ubyte[] iconImg = cast(immutable ubyte[]) import("icon.png");
//现在,隐式地按整型数组转换它:
immutable ubyte[] iconImg = import("icon.png");
除了0
或1以外的极
值,都不安全
(针对2.109
)已更新规范
,因此只有0和1
是极
的安全值
.即读取
其底层字节表示
设置了其他位
的极
值是实现定义
的,应避免它.
因此,在@安全
代码中已弃用以下内容
:
1,极的空
初化(自2.109
起)
2,从联
中读取极
字段(自2.109
起)
3,按极
动态数组类型转换
运行时动态数组
.
4,按尾
可变动态数组
类型,转换
运行时极
动态数组
5,按极
指针类型转换指针
.
6,按尾
可变指针类型
转换极
指针.