相关疑难解决方法(0)

snprintf和Visual Studio 2010

我很遗憾被迫使用VS 2010进行项目,并注意到以下代码仍然不使用非标准兼容编译器构建:

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
    char buffer[512];

    snprintf(buffer, sizeof(buffer), "SomeString");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(编译错误:C3861:'snprintf':找不到标识符)

我记得这是VS 2005的情况,我很震惊地看到它还没有被修复.

有没有人知道微软是否有计划将他们的标准C库迁移到2010年?

c visual-studio-2010

100
推荐指数
4
解决办法
8万
查看次数

您是否使用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万
查看次数

Mac解决方案"安全"替代"不安全"的C/C++标准库函数?

什么是Mac上最好的一站式"安全"C库解决方案?我使用"安全"/"不安全"的引用,因为关于某些标准库函数或其推定改进的替代品的好处存在很多争论.

vfprintf由于可能存在缓冲区溢出或其他安全问题,许多传统的标准C库函数(例如)被认为是不安全的.

在Windows上,Microsoft C/C++编译器提供 "_s"函数(例如vfprintf_s)作为标准库调用的更安全的替代方法.这些功能不是直接替换,因为它们具有提供附加安全信息(例如,缓冲区长度)所必需的不同签名.它们还提供其他功能,例如无效的格式字符串检测,不同的文件安全性等.据我所知,这种实现在Mac上不可用.

Apple(或第三方)是否在OSX上提供与GCC类似的任何内容?

特别是,我正在寻找至少以下功能的"安全"实现:

fopen vfprintf vsprintf sprintf strncpy strcpy strcat

请注意:这个问题与Mac有关.我不是要求你就微软的实现提出你的意见(除非它可以在Mac上使用.)虽然其中一些功能可能很容易自己编写,但并非所有功能都可以.我不是在问自己如何写这些.我不是要求提供有关如何使用STL类来做到这一点的技巧.我不是在问如何关闭警告.我的特殊需求非常具体.我正在尝试确定最佳实践Mac API,它与传统的C库调用尽可能相似,同时增加了安全性.当然,在Mac和Windows(以及其他操作系统)上运行的便携式实现会更好.

c macos gcc

11
推荐指数
4
解决办法
9662
查看次数

用于Windows CE的snprintf

我的程序在几个平台上运行.其中,Windows CE.目前,sprintf被广泛使用,导致缓冲区溢出等问题很多.我想用snprintf调用替换它们.对于Visual Studio,我发现了这个问题,它解决了问题的win32部分:

snprintf和Visual Studio 2010

但我不能让它适用于Windows CE,因为函数_vsnprintf_s_vscprintf,以及常量_TUNCATE都不可用.有人知道在Windows CE上复制snprintf(linux)行为的方法吗?

c printf windows-ce visual-studio

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