c语言中was not declared in this scope什么意思

#include <stdio.h>
int add(int x)
{
int n,i,product,sum,c;
printf("please enter a number:\n");
scanf("%d",&n);
sum=0;
product=1;
for(i=1;i<=n;i++)
{
product=product*i;
sum+=product;
printf("sum=%d",sum);
add(x);
return(x);
}
}
int main(int argc, char *argv[])
{
int result;
result=add(x);
printf("%d",result);
}

“was not declared in this scope”是一个错误信息,在编译的时候会遇到。其含义为标识符在其出现的地方是未被定义的。

出现该错误的时候,会同时把未定义的变量名显示出来。比如如下程序:

int main()
{
printf("%d",i);//这个i是没定义的。
}

这时就会显示一个'i' was not declared in this scope或者类似的错误信息出来。

对于变量和函数,如果未定义都会出现这个错误,该错误出现时,需要根据出现该错误的行号及名称,查找对应名称变量或函数的作用,一般有如下几种可能:

1、忘记定义。写代码的时候疏忽了,导致一些变量直接使用但没有定义。只要对应定义相应的函数或变量即可。

2 、拼写错误。写代码的时候,敲错了字符。比如sum敲成了Sum, average敲成averge等。对应修改即可。

3 、作用域不正确。在超出变量和函数的作用域部分使用了该变量或函数。需要通过定义位置,或增加声明的手段,加大变量的作用域使其包含引用位置。

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-11-07

是没有被定义的意思。

c语言中使用变量前需要先定义以引入变量,否则程序将无法识别变量名,导致程序运行出错。

这时候,只需在程序开始时加入定义变量符即可。

扩展资料

C语言整形变量

1.  基本型

类型说明符为int,在内存中占4个字节(不同系统可能有差异,此处原为2,经查证windows系统下为4,VAX系统也如此) ,其取值为基本整常数。

2.  短整型

类型说明符为short int或short'C110F1。所占字节和取值范围会因不同的编译系统而有差异。对于16字机,short int 占2个字节,在大多数的32位机中,short int 占4个字节。但总的来说,short int 至少16位,也就是2个字节。

3.  长整型

类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。在任何的编译系统中,长整型都是占4个字节。在一般情况下,其所占的字节数和取值范围与基本型相同。

4.  无符号型

类型说明符为unsigned。在编译系统中,系统会区分有符号数和无符号数,区分的根据是如何解释字    节中的最高位,如果最高位被解释为数据位,则整型数据则表示为无符号数。

参考资料

百度百科-C语言组成

本回答被网友采纳
第2个回答  推荐于2017-09-01

“was not declared in this scope”是一个错误信息,在编译的时候会遇到。其含义为标识符在其出现的地方是未被定义的。

出现该错误的时候,会同时把未定义的变量名显示出来。比如如下程序:

int main()
{
    printf("%d",i);//这个i是没定义的。
}

就会显示一个'i' was not declared in this scope或者类似的错误信息出来。

对于变量和函数,如果未定义都会出现这个错误。

该错误出现时,需要根据出现该错误的行号及名称,查找对应名称变量或函数的作用,一般有如下几种可能:

1 忘记定义。写代码的时候疏忽了,导致一些变量直接使用但没有定义。只要对应定义相应的函数或变量即可。

2 拼写错误。写代码的时候,敲错了字符。比如sum敲成了Sum, average敲成averge等。对应修改即可。

3 作用域不正确。在超出变量和函数的作用域部分使用了该变量或函数。需要通过定义位置,或增加声明的手段,加大变量的作用域使其包含引用位置。

第3个回答  2018-07-27

经过分析后发现原因如下:

1.变量、函数、或者类未声明或者定义。这是最简单的情况~却是我经常犯的错误(基本也是这几个原因中可能性最大的)

另外,网上有人指出以下原因也会导致该提示错误:

2.头文件相互#include时,导致了依赖关系错误。比如,头文件形成了一个环形依赖。

如果在file b中用到了file a中的变量、函数、类,那么由于#ifndef和#define的作用,file b中的#include <file a>语句执行时无法执行file a中的#include <file b>造成错误。

3.头文件起名字的时候不小心和库中的头文件重名了,而在程序中又用了这个库的这个头文件。

这样, 就造成宏重名了,一定有一个头文件因为 #ifndef失去了效果。别的文件自然找不到这个头文件中的声明,就提示 was not decleared in this scope了

本回答被网友采纳
第4个回答  推荐于2017-09-11
int main(int argc, char *argv[])
{
int result;
result=add(x);//你的参数x没有定义,或者x应该是一个数值,比如add(5)
printf("%d",result);
}追问

好了我把自定义函数里的一个}位置换了下 然后主函数里定义了个x可以了 谢谢你的提醒~

追答

for(i=1;i<=n;i++)
{
product=product*i;
sum+=product;
printf("sum=%d",sum);//你是说换到这里是吧
add(x);//你的递归没有结束条件
return(x);
}

本回答被提问者采纳