Вы можете просто сделать и использовать :: перед глобальной переменной или просто удалить
long s;
Из main () потому что вы объявляете локальную переменную s в функции main (). Глобальные s и локальные s отличаются, несмотря на то, что имеют одно и то же имя. давайте узнаем больше на следующем примере, присвоив локальной и глобальной переменной разные имена.
#include <iostream>
long x; // global value declaration
void output() // don't want to pass argument
{
std::cout << x;
}
int main()
{
long s;
std::cin >> s; //here you are storing data on local variable s
output() // But here you are calling global variable x.
}
В main () функция s является локальной, а x является глобальной переменной, и вы вызываете глобальную переменную в функции output (). Вы можете использовать :: (оператор разрешения области видимости) для вызова глобального x в main, если у вас такое же имя, или просто вызывать его по имени переменной, если у них другое имя.
PS: Если у вас есть какие-либо вопросы, просто прокомментируйте, надеюсь, это поможет вам и поймете, в чем ошибка. Подробнее о области действия локальной и глобальной переменной здесь