编译错误 在 C++ 上,Calcarea 未在此范围内声明

compiling error on c++, calcarea was not declared in this scope

本文关键字:范围内 Calcarea 声明 错误 C++ 编译      更新时间:2023-10-16

我正在学习C++,我正在做这个练习,使用函数打印三角形的面积,但是当我尝试编译"[错误]'calcarea'未在此范围内声明时出现错误">

#include<iostream>
#include<cstdlib>
using namespace std;
double farea;
main(){
    float base, height;
    cout<<"Enter base of triangle: ";   cin>>base;
    cout<<"Enter height of triangle: "; cin>>height;
    cout<<endl;
    farea = calcarea(base,height);
    cout<<"The area of the triangle is: "<<farea;
    system("pause>nul");
}
double calcarea(float ba, float he){
    double area;
    area = (ba*he)/2;
    return area;
}
编译器从

头到下读取代码,当它第一次遇到符号(在本例中为 calcarea(时,它会检查该符号是否已声明。由于calcarea只是在之后声明的,因此编译器当时不知道这个符号,因此,它是按摩:calcarea没有在这个范围内声明

如果将函数移动到首次调用之前,则会解决此错误。解决此问题的另一种方法是仅在 main 之前声明函数,并在之后定义它,这意味着您将函数保留在原处,但在 main 之前添加一行定义它:double calcarea(float ba, float he);

main(){
    float base, height;
    cout<<"Enter base of triangle: ";   cin>>base;
    cout<<"Enter height of triangle: "; cin>>height;
    cout<<endl;
    farea = calcarea(base,height); // here your compiler must already know what is calcarea, either by moving the definition, or only adding declaration 
    cout<<"The area of the triangle is: "<<farea;
    system("pause>nul");
}
编译器

正在帮助您。在您调用calcarea时,它尚未声明。在main之前移动它或声明它。