Что я делаю не так? Помогите, я новичок

Уже 4 часа сижу, а компилятор все ругается на "несуществующие переменные", которые есть. Вот код:

#include <iostream>

using namespace std;

void startUp();

void spwnVars();

void cmdCheck();

void startUp()
{
    bool isCmdVarMade = false;
    string command;
    string echo;
    cout << "#############" << endl;
    cout << "##  C++OS  ##" << endl;
    cout << "#############" << endl;
    cout << "root@cppos# ";
}

int main()
{
    startUp();
    cmdCheck();
}

void spwnVars()
{
    if (isCmdVarMade == false)
    {
        cin >> command;
        isCmdVarMade == true;
    }
}

void cmdCheck()
{
    if (isCmdVarMade == false)
    {
        spwnVars();
    }

    if (command == "echo")
    {
        cout << "Input text to display." << endl;
        cout << "Input: ";
        cin >> echo;
        cout << echo << endl;
        cout << "root@cppos# ";
        command = "0";
        cin >> command;
        cmdCheck();
    }
    else if (command == "shutdown")
    {
        // finish
    }
}```

Ответы (1 шт):

Автор решения: Soup

Переменные то есть, но они локальные для функций, где Вы их объявляете. В таком случае, другие функции не будут видеть их.

Однако, переменную можно объявить вначале программы, до функций, и она будет глобальной.
Например:

#include <iostream>

using namespace std;

bool isCmdVarMade = false;

Или же можно нужным функциям передавать переменные по ссылкам.
Например:

// создание такой функции
void spwnVars(int &isCmdVarMade, int &command)
{
    if (isCmdVarMade == false)
    {
        cin >> command;
        isCmdVarMade == true;
    }
}

// вызов
spwnVars(isCmdVarMade, command);

А вообще советую почитать, про локальные и глобальные переменные)
-> Вот

→ Ссылка