铭记给出的答案有关问题的一个 更安全 格式库C,我想知道是否有一个 安全的 C格式图书馆?

我的意思是:

  • 有没有可能不匹配的格式串的论点
  • 有没有可能崩溃的通过传递错误的类型
  • 没有依赖于平台的方面

请不要回答有关 Microsoft安全串库, 或库少 不安全 但仍然不安全,因为我知道这些,他们不满足的要求对于总的安全。

在此先感谢

有帮助吗?

解决方案

你写在C。C不是类型的安全。你不能避免不确定的行为如果你通过 int* 而不是一个 char*.有没有这样的事情",有没有可能性"如果你变量不是静态型的检查/标记的运行检查。

如果你有什么,产生警告的,那是相当好的已经...

如果你真的 需要 或者想要的安全,你可能想看一看 旋风分离器 (C话),或者一些完全不同的语言。

其他提示

有没有可能不匹配的格式串的论点

如果你想要一个格式串,没有特别编译器支持你基本上不能这样做。这就是说,你可以有一个安全的格式,图书馆在C如果你放弃的格式串。我不知道,但我不会感到惊讶如果他们的存在。

一个可能的接口,如:

typedef ... FORMATTER;

FORMATTER create_formatter();
int fmt_add_string_default(FORMATTER f, const char *s);
int fmt_add_string(FORMATTER f, const char *s, int maxlength, const char fill, enum fmt_alignment align);
...
int fmt_add_decimal_default(FORMATTER f, int d);
... // you get the idea
int fmt_write_result(FORMATTER f, char *out, int out_length);
void destroy_formatter(FORMATTER f);

这样的事情将是完美的安全,如果一位详细。

没有,因为任何"安全"你介绍能力从属的语言。这就像大楼你的城堡在沙滩上-不管如何良好的城堡是,它仍然可以作出落如果你挖出来的沙从它的下面。

没有任何机制在C强制执行的具体参数的种类,也不应有。

如果人们不要用你的工具,因为它们意味着,那是他们自己的问题,在我的意见。你不应该将提供软件到三岁的孩子-他们预计将有一点点的情报。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top