相关疑难解决方法(0)

您是否使用TR 24731'安全'功能?

ISO C委员会(ISO/IEC JTC1/SC21/WG14)已发布TR 24731-1,正在研究TR 24731-2:

TR 24731-1:C库的扩展第一部分:边界检查接口

WG14正在研究更安全的C库函数.该TR旨在通过添加具有缓冲区长度的额外参数来修改现有程序.最新草案见N1225号文件.理由是在N1173号文件中.这将成为技术报告类型2.

TR 24731-2:C库的扩展 - 第二部分:动态分配功能

WG14正在研究更安全的C库函数.该TR面向使用动态分配而不是缓冲区长度的额外参数的新程序.最新草案见N1337号文件.这将成为技术报告类型2.

问题

  • 您是否使用支持TR24731-1功能的库或编译器?
  • 如果是这样,哪个编译器或库以及哪个平台?
  • 您是否因修复代码以使用这些功能而发现任何错误?
  • 哪些功能提供最大价值?
  • 有没有提供任何价值或负值?
  • 你打算将来使用这个图书馆吗?
  • 您是否正在跟踪TR24731-2的工作?

c security coding-style tr24731

71
推荐指数
5
解决办法
1万
查看次数

fopen弃用警告

Visual Studio 2005 C++编译器上,当我的代码使用fopen和此类调用时,我收到以下警告.

1>foo.cpp(5) : warning C4996: 'fopen' was declared deprecated
1>        c:\program files\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen'
1>        Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
Run Code Online (Sandbox Code Playgroud)

我该如何防止这种情况?

fopen deprecated visual-c++

66
推荐指数
5
解决办法
16万
查看次数

如何使用_CRT_SECURE_NO_WARNINGS

我在我的简单MFC窗口应用程序中编译错误,该应用程序由向导生成,包含几行代码:

错误C4996:'strncpy':此函数或变量可能不安全.请考虑使用strncpy_s.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详细信息请参见在线帮助.

我设置 Configuration Properties>>C/C++>>Preporocessor>>Preprocessor Definitions>> _CRT_NONSTDC_NO_WARNINGS

但这没有帮助.我有另一个非常接近的项目,在这个地方只生成警告,它没有_CRT_NONSTDC_NO_WARNINGS定义.

只有项目之间的差异是向导中的几个不同选项.

为什么_CRT_NONSTDC_NO_WARNINGS对第一个项目没有帮助,为什么第二个项目在没有这个定义的情况下编译没有问题?

c++ warnings visual-c++ visual-studio-2012

45
推荐指数
6
解决办法
21万
查看次数

为什么我不能使用strerror?

我正在将一些代码移植到Windows,而Microsoft编译器(Visual C++ 8)告诉我这strerror()是不安全的.

撇开微软所有安全字符串中的烦恼因素,我实际上可以看到一些已弃用的函数是危险的.但我无法理解可能出现的问题strerror().它需要一个code(int),并返回相应的字符串,如果该代码未知,则返回空字符串.

危险在哪里?

在C中有一个很好的选择吗?

C++中有一个很好的替代品吗?

[编辑]

得到了一些很好的答案,现在理解一些实现可能疯狂到实际写入一个共同的共享缓冲区 - 在单线程中不安全的重入,没关系线程之间! - 我的问题不再是"为什么我不能使用它,有什么替代方案?" "C和/或C++中是否有任何体面,简洁的替代品?"

提前致谢

c c++ deprecated

31
推荐指数
4
解决办法
2万
查看次数

strncpy_s使用G ++编译器

我最初使用Microsoft/visual c ++编译器编写了一个作业,但我的课程要求我使用G ++在unix上运行和编译

但是,strncpy_s不能使用g ++编译,我的特定程序的任何解决方法?

这是使用它的代码段:

void PhoneNumber::setName(const char name[])
{
    strncpy_s(_name, name, MAX_NAME_LENGTH);
}
Run Code Online (Sandbox Code Playgroud)

c++ g++ strncpy

0
推荐指数
1
解决办法
1051
查看次数