#2151. C++-编译-"xxx" was not declared in this scope
C++-编译-"xxx" was not declared in this scope
Background
Description
xxx没有在这个范围内声明
可能是:
1.变量在这句代码前没定义
比如:
int a=2; //没定义b
cout<<a+b;
2.函数没定义,或者在这句代码前未声明
没定义的情况就和变量没定义一样了,把函数写出来就好了
也有可能这个函数定义了,但是定义在这行代码后面,且未声明,比如:
#include <iostream>
using namespace std;
int main(){
cout<<func(1);
return 0;
}
int func(int a){
return a+1;
}
建议:
1、可以把函数定义放在main之前
2、在main前面加上函数的声明,如:
#include <iostream>
using namespace std;
int func(int); //加一句声明
int main(){
cout<<func(1);
return 0;
}
int func(int a){
return a+1;
}
这里提一嘴,很多小伙伴会觉得这样写并不漂亮,但是实际上在写大程序结构的时候,有声明可以让用户更方便地看到这个函数是怎么用的,而不用看到繁荣复杂的函数代码内容,实际上很多程序员也是这样使用的,把声明单独拎到一个.h文件中,让main函数更加显眼。不过对于初学者,还是不推荐多写一个声明的,毕竟程序小而且多一个麻烦。
3.类在这句代码前未定义
如:
#include<iostream>
using namespace std;
int main(){
myClass a; //在这之前没有myClass的定义
return 0;
}
4.等等
5.使用库函数的时候忘记加相应的头文件了
比如使用printf函数而忘记加<stdio.h>头文件
6.忘记加using namespce std;
在没加using namespace std;时,使用<iostream>的库函数的时候需要加上"std::"
比如:
#include<iostream>
int main(){
cout<<0; //这里应该改成std::cout<<0;
return 0;
}
7.值得一提的是,在使用自定义变量/函数/类等的时候,可能因为大小写未区分而导致错误
这是由于C/C++语言是不支持大小写通用的
比如:
int Array[3]={0};
array[0]=1; //这里定义和使用时的大小写不同
Format
Input
Output
Samples
Limitation
1s, 1024KiB for each test case.