首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否在作用域中未声明sprintf?

是否在作用域中未声明sprintf?
EN

Stack Overflow用户
提问于 2012-11-26 11:07:19
回答 3查看 44.6K关注 0票数 15

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

代码语言:javascript
复制
sprintf not declared in scope 

我是否在#includes中包含了一些东西,或者我如何才能让它正常工作?我在我妈妈的VS上工作,但是回到家,我在代码块上找不到它

代码语言:javascript
复制
if (tmp2 <= B_dest[hr - 6])
{
    sprintf(name, "B%d", tmp3);
}else{
    sprintf(name, "A%d", tmp3);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-26 11:10:09

您需要包含stdio.h

代码语言:javascript
复制
#include<stdio.h>

stdio.h声明了函数sprintf,没有头,编译器无法理解sprintf的含义,因此它会给出错误。

在C++中请注意,

包含cstdio会导入std名称空间中的符号名称,也可能导入全局名称空间中的符号名称。

包含stdio.h会导入全局名称空间中的符号名称,也可能导入std名称空间中的符号名称。

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

票数 28
EN

Stack Overflow用户

发布于 2012-11-26 11:10:02

确保你有#include <cstdio>

并根据@Potatoswatter的指示,以std::sprintf()的身份访问sprintf。

或者使用旧的c-style:#include <stdio.h>来包含sprintf的定义。

票数 6
EN

Stack Overflow用户

发布于 2014-03-05 18:07:31

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

我的编码不是缺省的,这以某种方式导致集成开发环境在打开include <...>时出现问题

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13558159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档