2407d,让d的printf安全

07-17 1097阅读

原文

2407d,让d的printf安全
(图片来源网络,侵删)

理念

printf是个非常有用的构造.它可能是有史以来最多优化和调试的函数.但是,因为它可能按不安全方式使用,它不能在@safeD代码中使用.

添加检查与其相应的格式限定符不匹配的参数,可缓解其中的许多问题.该提案解决剩余的问题,并使printf在@safe代码中可用.

理由

printf是一个有许多优点的主力函数:

1,它可能是有史以来优化和调试最多的非平凡函数.

2,它非常轻量,因为生成最少的代码来调用它

3,无其他依赖,也可工作,比如将D移植到新平台时

4,无需d运行时或Phobos即可工作

5,在BetterC模式下工作

6,这是周知的

但是,它有个不安全的接口.D正在朝着默认安全的方向发展,这就使得使用printf很笨拙.在调用前加上debug可在@safe代码中接受printf调用,但是当在非调试版本中需要printf时,这不管用.

printf的不安全问题是:

1,参数与格式限定符不匹配.编译器检查这些不匹配可缓解它

2,%s按参数指向串的指针.虽然只能读取串,但指针仍无限制遍历串.

3,%.s参数带(int,char)形式的参数.整数是要打印的符数,但

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]