gpt4 book ai didi

c++ - 为什么我不能使用 fopen?

转载 作者:IT老高 更新时间:2023-10-28 12:58:38 24 4
gpt4 key购买 nike

a previous question I asked about the so-called safe library deprecations 的模具中,我发现自己同样对为什么应该弃用 fopen() 感到困惑。

该函数接受两个 C 字符串,并返回一个 FILE* ptr,如果失败则返回 NULL。线程安全问题/字符串溢出问题在哪里?还是别的什么?

提前致谢

最佳答案

可以使用fopen()。说真的,在这里不要理会微软,他们背离了 ISO 标准,对程序员造成了真正的伤害。他们似乎认为编写代码的人不知何故是脑残,不知道如何在调用库函数之前检查参数。

如果有人不愿意学习 C 编程的复杂性,那么他们真的没有生意去做。他们应该转向更安全的语言。

这似乎只是 Microsoft 对开发人员锁定供应商的又一次尝试(尽管他们不是唯一尝试这样做的人,所以我没有特别谴责他们)。我通常会添加:

#define _CRT_SECURE_NO_WARNINGS

(或命令行上的 "-D" 变体)到我的大多数项目,以确保我在编写完全有效的合法 C 代码时不会被编译器打扰。

Microsoft 在 fopen_s() 函数中提供了额外的功能(例如文件编码)以及更改返回的方式。这对于 Windows 程序员来说可能会更好,但会使代码天生不可移植。

如果您只打算为 Windows 编写代码,请务必使用它。我自己更喜欢在任何地方编译和运行我的代码的能力(尽可能少的改动)。


从 C11 开始,这些安全功能现在是标准的一部分,尽管是可选的。详情请查看附件 K。

关于c++ - 为什么我不能使用 fopen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com