![]() |
1
63
我从他们成立(当时是一个单一的TR)以来就一直是这些TR的声乐批评家,并且绝不会在我的任何软件中使用它们。它们掩盖症状而不是解决原因,我认为,如果有任何问题,它们将对软件设计产生负面影响,因为它们提供了错误的安全感,而不是促进现有实践,从而更有效地实现相同的目标。我并不孤单,事实上,我不知道在委员会之外有一个主要的支持者在制定这些TRS。 我用的是glibc,因为我知道我不用去处理这些废话,作为glibc的首席维护官ulrich drepper, said about the topic :
他继续详细讨论了一些被提议的函数的问题,并在其他地方指出glibc永远不会支持这一点。 奥斯汀集团(负责维护POSIX)对TR、他们的意见和委员会的回应进行了非常重要的审查。 here . Austin Group Review非常好地详细说明了TR的许多问题,因此我不想在这里讨论个别的细节。 因此,底线是:我不使用支持或将支持这一点的实现,我也不打算使用这些函数,而且我在tr中看不到任何积极的价值。我个人认为,tr在任何形式上仍然存在的唯一原因是,它正受到微软的大力推动,微软最近证明了它非常有能力变瘦。尽管遭到广泛反对,但通用汽车还是冲击了标准委员会。如果这些功能曾经被标准化,我认为它们将永远不会被广泛使用,因为提案已经存在几年了,并且没有获得任何真正的社区支持。 |
![]() |
2
28
直接回答问题我喜欢罗伯特的回答,但我对我提出的问题也有一些看法。
总的来说,我不相信第1部分“边界检查接口”。第2部分“动态分配函数”草案中的材料更好。
如果由我决定的话,我会沿着第1部分的路线移动一些,但是我还修改了c99标准C库中返回
Microsoft的实现与标准规范不同更新(2011-05-08)
也见此
question
. 遗憾的是,对于tr24731函数的有用性来说,有些函数的定义在微软实现和标准之间是不同的,这使它们(对我来说)毫无用处。我的答案是
同样,也存在问题
最初,我计划使用“safe”函数来获取一些代码,以便在Windows和Unix上清晰地编译,而无需编写条件代码。因为微软和ISO的功能并不总是相同,所以这是失败的,现在是放弃的时候了。
Microsoft的更改
|
![]() |
3
7
好了,现在站起来 对于 TR24731-2:
是的,我已经用过了
为什么? 因为它们一次又一次地提供我所需要的:一种强大、灵活、安全且(相对)易于使用的方式,可以将任何文本格式化为新分配的字符串。
我也非常赞成孟斯韦尔斯:比如
|
![]() |
4
5
是的,Visual Studio 2005&2008(显然是针对Win32开发)。
某种程度上。。。。我编写了自己的安全函数库(我们经常使用的只有大约15个),它将用于多个平台——Linux、Windows、VxWorks、InTime、RTX和Uitron。创建安全功能的原因是:
一旦函数被写入,就会发现更多的错误。所以是的,使用函数是有价值的。
更安全版本的vsnprintf、strncpy、strncat。
fopen_和类似的功能对我个人来说没有什么价值。如果fopen返回空值,我没问题。您应该始终检查函数的返回值。如果有人忽略了fopen的返回值,怎么让他们检查fopen的返回值?我理解fopen_将返回更具体的错误信息,在某些情况下可能有用。但对于我正在做的事情,这并不重要。
我们现在正在使用它——在我们自己的“安全”库中。
不。 |
![]() |
5
5
不,这些函数是绝对无用的,除了鼓励编写代码之外没有其他用途,所以它只能在Windows上编译。 snprintf是完全安全的(正确实现时),所以snprintf没有意义。斯特拉卡斯遗嘱 销毁数据 如果缓冲区溢出(通过清除连接到字符串)。还有许多其他完全不了解事物如何工作的例子。 真正有用的函数是bsd strlcpy和strlcat。但是微软和Drepper都出于自私的原因拒绝了这些,这让各地的C程序员都很恼火。 |
![]() |
Alex Pander · cleaner代码的嵌套命名空间[已关闭] 6 年前 |
![]() |
Jamil Noyda · 导入模块的最佳方式Python[复制] 6 年前 |
![]() |
Samselvaprabu · 我们是否需要不惜任何代价避免重复? 6 年前 |
![]() |
user9549524 · 基于一列的值从二维矩阵中提取值 7 年前 |
![]() |
MedAl · 不使用try/catch处理异常 7 年前 |
![]() |
Declan McKenna · 特殊情况模式在Swift中是否多余? 7 年前 |