error ‘ ‘ was not declared in this scope

error ‘ ‘ was not declared in this scope means the compiler unable to find the declaration of a variable or a function

we have a rule in C/C++ that before you call a variable or a function you should declare them first

it is the  job of a compiler to match the variable call or a function call, to its declaration

if the compiler doesn’t find the match between the call and the declaration

then at that instant, it will throw an error such as  ‘ variable or a function ’ was not declared in this scope

let’s deconstruct some examples to understand the cause of the error

the compiler didn’t find the declaration of the  variable b

#include <iostream>
using namespace std;
int main()
{
    int a=2;
    //b=3; //error 'b' was not declared in this scope
    cout << "addition=" <<a+b<< endl;
    return 0;
}

you can not  access a variable from outside of the block

what is a block?

Straightway, a block means an opened and closed braces

{

}

The truth is once the controller comes out of a block, then, at that instant, you can not access the variables that were present in the block

#include <iostream>
using namespace std;
int main()
{
    {
    int a=2;
    b=3; 
    cout << "print variable a=" <<a<< endl;
    }
    cout << "print variable b=" <<b<< endl; // error: 'b' was not declared in this scope
    return 0;
}

you can not  access a variable from the outside function

#include <iostream>
using namespace std;
//int b=3;//Global variable
void test() // function declaration
{
    cout << "print variable b=" <<b<< endl;
}
int main()
{
    {
    int a=2,b=3;
    cout << "print variable a=" <<a<< endl;
    }
    // error: 'b' was not not declared in this scope
    test();// function call
    return 0;
}

You can not use the functions of the header files until and unless you #include<header>

For example, the header file #include<math.h> contains functions such as

Exp(x)

Floor(x)

Sqrt(x)

Log(x) and so on

The header file <math.h> will have all the build-in declarations for its functions

Straightway, if you use the functions of the math.h  undoubtedly the compiler will not be able  to find its function declarations

As a result, it will throw an error such as “ ’ ‘ was not declared in this scope”

#include <iostream>
//#include <math.h>
using namespace std;
int main()
{
    int a=2,b=3;//error 'pow' was not declared in this scope if you did not file #include<math.h>
    cout << "power=" <<pow(a,b)<< endl;
    return 0;
}

You can not access a function call until and unless you declare them first

the compiler didn’t find the declaration of the  function test( )

#include <iostream>
using namespace std;
int b=3;//Global variable
/*void test() // function declaration
{
    cout << "print variable b=" <<b<< endl;
}
*/
int main()
{
    {
    int a=2;
    cout << "print variable a=" <<a<< endl;
    }
    // error: 'test' was not not declared in this scope
    test();// function call
    return 0;
}

Mohammed Anees

Hey there, welcome to aneescraftsmanship I am Mohammed Anees an independent developer/blogger. I like to share and discuss the craft with others plus the things which I have learned because I believe that through discussion and sharing a new world opens up

Leave a Reply

Your email address will not be published.