0

Я только начал изучать С++ и чуть ли не в каждом коде сталкиваюсь с этими ошибками. Вообще не могу понять, в чём дело.

Сам код:

#include <iostream>
using namespace std;
void prog2() {
    int min, max, s = 0;
    cout << "Введите диапозон чисел" << endl;
    cin >> min;
    cin >> max;
    for (; min <= max; min++) {
        if (min % 2 == 1) {
            s += min;
        }
    }
    cout << s;
}

Ошибки:

Серьезность   Код Описание    Проект  Файл    Строка  Состояние подавления
Ошибка    LNK2019 ссылка на неразрешенный внешний символ main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ).    Project1    D:\C++\Project1\Project1\MSVCRTD.lib(exe_main.obj)  1   
Серьезность   Код Описание    Проект  Файл    Строка  Состояние подавления
Ошибка    LNK1120 неразрешенных внешних элементов: 1  Project1    D:\C++\Project1\x64\Debug\Project1.exe  1   

1 Answers1

1

C++ программа (executable) в стандартном случае должна иметь точку входа: то бишь, что нужно делать по ее запуску. По умолчанию, это будет функция main(), которой у вас нету.

Если переписать ваш код, просто поместив суть в main():

#include <iostream>
using namespace std;

int main() { int min, max, s = 0; cout << "Введите диапозон чисел" << endl; cin >> min; cin >> max; for (; min <= max; min++) { if (min % 2 == 1) { s += min; } } cout << s;

return 0;

}

или добавив main() уже вызывающую вашу функцию prog2()

#include <iostream>
using namespace std;

void prog2() { int min, max, s = 0; cout << "Введите диапозон чисел" << endl; cin >> min; cin >> max; for (; min <= max; min++) { if (min % 2 == 1) { s += min; } } cout << s; }

int main() {

prog2();

return 0;

}

то вышеописанные проблемы должны исчезнуть. Собственно, первая ошибка:

LNK2019 ссылка на неразрешенный внешний символ main

вам и пытается на это намекнуть. Просто не очень доходчиво.

  • Спасибо вам огромное! Я просто неверно понял роль main. Я думал,что это просто название. Ещё один вопрос есть. Подскажите пожалуйста, какая разница между void и int функциями и что делает return. Просто я понял,что войд ничего не возвращает, но не понял,что значит "что-то вернуть" – Максим Валеска Dec 19 '21 at 20:37
  • в данном случае, main - это функция возвращающая int. этот return 0 вернет 0 операционной системе, что означает, что ошибок по окончании исполнении не возникло. – Anton Menshov Dec 19 '21 at 20:38
  • когда я вызываю prog2() я просто ее вызываю, и так как prog2() ничего не возращает никуда, то ничего делать и не нужно. prog2() - имеет сигнатуру void prog2(). – Anton Menshov Dec 19 '21 at 20:39
  • если бы prog2() имела сигнатуру bool prog2() и возвращала по результату какой-то логики true или false, то в main() я бы вызывал ее так: bool value = prog2() и мог бы потом, например, написать: std::cout<<"Function returned "<<value<<"std::endl; – Anton Menshov Dec 19 '21 at 20:40