#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.