16

我在这里有一小段代码来自我设计的东西,但我不断收到错误:

sprintf not declared in scope 

我是否在#includes 中包含某些内容,或者我怎样才能使其正常工作?我在我妈妈的 VS 上工作,但回到家,我无法在代码块上得到它

if (tmp2 <= B_dest[hr - 6])
{
    sprintf(name, "B%d", tmp3);
}else{
    sprintf(name, "A%d", tmp3);
}
4

3 回答 3

29

您需要包括stdio.h.

#include<stdio.h>

stdio.h声明函数,如果sprintf没有标头,编译器无法理解是什么sprintf意思,因此它会给你错误。

在 C++ 中请注意,

包括在命名空间和可能在全局命名空间cstdio中导入符号名称。 包括在全局命名空间和可能在命名空间中导入符号名称。 std
stdio.hstd

这同样适用于所有 c 样式的标题。

于 2012-11-26T03:10:09.250 回答
6

确保你已经#include <cstdio>

std::sprintf()按照@Potatoswatter 的指示访问 sprintf。


或者做旧的 c 风格:#include <stdio.h>包括sprintf的定义。

于 2012-11-26T03:10:01.827 回答
0

我与 C::B 有类似的问题,发现问题不仅仅是编译器路径 - 似乎 IDE 本身在打开 #include <...> 文件时遇到问题 - 但是这可以通过设置 -> 编辑器来解决-> 其他设置 -> 打开文件时使用编码:默认

我的编码不是默认的,这不知何故导致 IDE 打开 include <...>

然而,它并没有解决“未在此范围内声明”的问题

于 2014-03-05T10:07:30.580 回答