На этом уроке мы рассмотрим наиболее частые проблемы, с которыми сталкиваются новички при написании программ на языке C++.
- Проблема №1. Кириллица
- Проблема №2. Пропадает консоль
- Проблема №3. Undeclared identifier
- Проблема №4. Undeclared identifier end1
- Проблема №5. Программа не работает
- Проблема №6. Нумерация строк в Visual Studio
- Проблема №7. Unresolved External Symbol
- Проблема №8. PDB file
- Проблема №9. Не работает C++11/C++14
- Проблема №10. Пустая консоль
- У меня есть другая проблема, с которой я не могу разобраться. Как и где я могу получить ответ?
Проблема №1. Кириллица
«Как использовать кириллицу в программах C++?«
Чтобы выводить кириллицу в языке C++ нужно подключить заголовочный файл <Windows.h>:
#include <Windows.h>
И прописать следующие две строки в функции main():
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
В качестве альтернативного варианта можно использовать следующую строку в функции main():
setlocale(LC_ALL, "Russian");
Проблема №2. Пропадает консоль
«При выполнении программы появляется черное консольное окно, а затем сразу пропадает.«
Шаг №1: Добавьте следующую строку кода в верхнюю часть вашей программы:
Некоторые компиляторы (например, Bloodshed’s Dev C++) автоматически не задерживают консольное окно после того, как программа завершила свое выполнение. Если проблема в компиляторе, то следующие два шага решат эту проблему:
#include <iostream>
Шаг №2: Добавьте следующий код в конец функции main() (прямо перед оператором return):
std::cin.clear();
std::cin.ignore(32767, '\n');
std::cin.get();
Таким образом, программа будет ожидать нажатия клавиши, чтобы закрыть консольное окно. Вы получите дополнительное время, чтобы хорошенько всё рассмотреть/изучить. После нажатия любой клавиши, консольное окно закроется.
Другие решения, такие как system("pause");
, могут работать только на определенных операционных системах, поэтому вариант, приведенный выше, предпочтительнее.
Примечание: Visual Studio не задерживает консольное окно, если выполнение запущено с отладкой ("Отладка" > "Начать отладку"
или F5
). Если вы хотите, чтобы была пауза — воспользуйтесь решением выше или запустите программу без отладки ("Отладка" > "Запуск без отладки"
или Ctrl+F5
).
Проблема №3. Undeclared identifier
«При использовании cin, cout или endl компилятор говорит, что cin, cout или endl являются «undeclared identifier» (необъявленными идентификаторами).«
Во-первых, убедитесь, что у вас присутствует следующая строка кода в верхней части вашей программы:
#include <iostream>
Во-вторых, убедитесь, что cin
, cout
или endl
имеют префикс std::
, например:
std::cout << "Hello world!" << std::endl;
Проблема №4. Undeclared identifier end1
«При использовании endl для перехода на новую строку, появляется ошибка, что end1 является «undeclared identifier».«
Убедитесь, что вы не перепутали букву l
(нижний регистр L
) в endl
с цифрой 1
. В endl
все символы являются буквами. Также легко можно перепутать заглавную букву О
с цифрой 0
(ноль).
Проблема №5. Программа не работает
«Моя программа компилируется, но работает не так, как нужно. Что мне делать?«
Выполните отладку программы. Детально об этом читайте в уроке №26 и в уроке №27.
Проблема №6. Нумерация строк в Visual Studio
«Как включить нумерацию строк в Visual Studio?«
Перейдите в меню "Средства" > "Параметры"
:

Затем откройте вкладку "Текстовый редактор" > "Все языки" > "Общие"
и поставьте галочку возле "Номера строк"
, затем нажмите "ОК"
:
Проблема №7. Unresolved External Symbol
«При компиляции программы я получаю следующую ошибку: «unresolved external symbol _main or _WinMain@16».«
Это означает, что ваш компилятор не может найти главную функцию main()
. Все программы должны содержать эту функцию.
Здесь есть несколько пунктов, которые нужно проверить:
- Есть ли в вашей программе функция
main()
? - Слово
main
написано правильно? - Подключен ли файл, который содержит функцию
main()
, к вашему проекту? (если нет, то переместите функциюmain()
в файл, который является частью вашего проекта, либо добавьте этот файл в ваш проект) - Подключен ли файл, содержащий функцию
main()
, к компиляции?
Проблема №8. PDB file
«При компиляции программы я получаю следующее предупреждение: «Cannot find or open the PDB file».«
Это не ошибка, а предупреждение. На работоспособность вашей программы оно не повлияет. Тем не менее, в Visual Studio вы можете решить всё следующим образом: перейдите в меню "Отладка" > "Параметры" > "Отладка" > "Символы"
и поставьте галочку возле "Серверы символов (Майкрософт)"
, затем нажмите "ОК"
.
Проблема №9. Не работает C++11/C++14
Я использую Code::Blocks или G++, но функционал C++11/C++14 не работает.
Ответ №9
В Code::Blocks перейдите в "Project" > "Build options" > "Compiler settings" > "Compiler flags"
и поставьте галочку возле пункта "Have g++ follow C++14 ISO C++ language standard"
. Смотрите урок №4 — там есть скриншоты, как это сделать.
При компиляции в g++, добавьте следующий код в командную строку:
-std=c++14
Проблема №10. Пустая консоль
«Я запустил программу, появилось консольное окно, но ничего не выводится.«
Ваш антивирус может блокировать выполнение вашей программы. Попробуйте отключить его на время и запустите программу еще раз.
У меня есть другая проблема, с которой я не могу разобраться. Как и где я могу получить ответ?
По мере прохождения данных уроков, у вас, несомненно, появятся вопросы или вы столкнетесь с проблемами. Что делать?
Во-первых, спросите у Google или Yandex. Четко сформулируйте вашу проблему и просто «погуглите». Если у вас есть сообщение об ошибке — скопируйте его и вставьте в поиск Google, используя кавычки. Скорее всего, кто-то уже задавал такой же вопрос, как у вас, и получил на него ответ.
Если Google не помог, то спросите на специализированных сервисах вопросов/ответов, либо на форумах, посвященным тематике программирования/IT. Вот самые популярные из них:
Но будьте внимательны и старайтесь максимально конкретизировать свою проблему, укажите, какую операционную систему и IDE вы используете, а также то, что вы пробовали сделать самостоятельно для решения своей проблемы.