我有一个使用的C程序sprintf_s.它在Windows中运行良好,但是当我在Linux中编译我的代码时,它会出现以下错误:
sprintf_s was not declared in this scope.
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?
peo*_*oro 30
它不是标准的,你不会在Linux上找到这样的功能.
标准函数snprintf应具有类似的语义.
sprintf_s只是附件 K 的一部分,C11 标准的可选附件:
附件K
...
K.2 范围
- 本附件规定了一系列可用于缓解程序安全漏洞的可选扩展,包括在现有标准头中声明或定义的新函数、宏和类型。
...
K.3.5.3.6 sprintf_s 函数
概要
Run Code Online (Sandbox Code Playgroud)#define __STDC_WANT_LIB_EXT1__1 #include <stdio.h> int sprintf_s(char * restrict s, rsize_t n, const char * restrict format, ...);
(强调)
它从未进入 POSIX(或 Linux)(并且根本没有错过,甚至在委员会中也有关于它的有用性的争论)。
为了获得更好的可移植性,请使用snprintf它作为核心标准的一部分并提供您需要的所有功能。