问题标签 [tr24731]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - sprintf_s() 隐式声明警告
我有一个 C 代码,其中有这一行。
这里,var
是char*
类型,local_filecounter
是int
类型。
当我运行代码时,它给了我这个警告:
警告:函数“sprintf_s”的隐式声明在 C99 [-Wimplicit-function-declaration] 中无效
这个警告是什么,我怎样才能摆脱它?
gcc - “字符串安全函数”和 gcc
我正在使用 CodeBlocks 和 GCC 编译器。我想使用“字符串安全函数”,例如strlen_s
, strcpy_s
,但编译器显示错误:
对 strlen_s 的未定义引用。
然后我在代码中添加一行:
#define __STDC_WANT_LIB_EXT1__ 1
以及在编译器选项(设置 -> 编译器 -> 全局编译器设置 -> 其他编译器选项)中编写以下内容:
-std=c11
在我正在阅读的书中,有一段代码可以检查我的编译器是否支持这些功能。代码如下:
当我运行此代码时,我看到"optional functions are defined"。我还重新安装了 CodeBlocks,但仍然出现这些错误。
我应该安装另一个编译器吗?如果我应该,哪一个是最好的?
c - C4996,不推荐使用 fopen:为什么?(不是:如何压制)
什么是不安全fopen
的fopen_s
?
如何以安全的方式使用 fopen(如果可能)?
(我不想知道如何抑制警告 - 有足够的 stackoverflow 文章可以回答这个问题)
编辑:问题被关闭为“基于意见”(即使只有一个答案,我没有看到太多意见)。我会尝试改写一下:如果有人可以说明如何/在哪里可以找到 Microsoft (谁弃用该功能)解释为什么它被弃用的文档,那就太好了。
c - vsnprintf 和 vsprintf_s 有什么区别?
我目前正在编写用于字符串操作的代码。作为其中的一部分,我正在使用vsnprintf()
.
但是,编译器会在错误消息下方闪烁:
结果与vsprintf_s()
预期不符。
vsnprintf()
和 和有什么不一样vsprintf_s()
?
c - __STDC_LIB_EXT1__ 在 gcc 和 clang 中的可用性
由于快速谷歌搜索没有找到任何东西,我会在这里尝试询问(因为很多参与 gcc/clang 的人在这里闲逛) - __STDC_LIB_EXT1__
gcc/clang 中的状态是什么?我们正在开发一个跨平台应用程序,我想使用其中的一些安全边界检查功能<stdio.h>
(奇迹般地在 Visual Studio 2017 上可用),但无法使用 Xcode 9.2 编译代码。我假设 Xcode 使用的 clang 版本可能已经过时,但 Ubuntu 上的 gcc 6.3.0 的行为相同。我正在尝试将tmpnam_s与以下示例一起使用:
但是由于未定义宏而编译失败:
我做错了什么还是这个功能集的支持很差?
c - 开发 C++ strtok_s 抛出 [警告] 赋值使指针从整数而不进行强制转换
我有以下程序:
当我使用 Visual Studio 2015 编译它时,它会编译,没有任何警告。但是当我使用 Dev C++ 5.11 编译它时,我在第 10 行收到以下警告:
[警告] 赋值使指针从整数不进行强制转换
有没有解决该警告的解决方案?
c - 如果第一个 scanf_s 包含多个单词,则第二个 scanf_s 将跳过
每当用户输入多个单词时,它将跳过第二个 scanf_s。例如,当它询问“请输入您的姓名:”并且如果用户输入“John”就可以了,但是如果用户输入“John Cena”第二个要求 IC/Passport 的 scanf_s,它会跳过它,我知道这与下一行有关 \n 输入按钮问题,但我无法修复它...
c - strtok_s 在 os x 上未定义
我正在尝试使用应该在中定义的 C11 函数strtok_s<string.h>
,但是当我尝试使用它时,clang 给了我一个链接错误。编译这个程序:
给我这个错误:
我在 OS X 10.12.6 上使用 clang 8.1.0。我究竟做错了什么?
c - 为什么 gcc(或 glibc)没有实现 _s 函数?
_s 函数,例如scanf_s
,printf_s
似乎是可选标准。MSVC 已经实现了这些功能,但 gcc 没有。
是否有不实施安全功能的具体原因?scanf
glibc 足够安全吗?
c - scanf_s() 缓冲区在哪里定义?
如果我无法访问互联网,但知道我想使用该scanf_s()
函数从键盘 ( stdin
) 获取输入,我怎么知道在哪里声明缓冲区?
目前,当我进入scanf_s()
Visual Studio 中的函数时,我看到了:
所以,我可以看到它scanf_s()
需要 1 个已定义的参数 ( char const * _Format
),在这种情况下,它可能是一些占位符,例如 be "%s"
,但第二个参数没有任何内容 - 用于存储扫描结果的缓冲区的内存地址。