Неустранимая ошибка: файл 'stdafx.h' не найден

Я новичок в программировании на C++ и пытаюсь научиться самостоятельно через веб-сайты (learncpp.com), хотя я уже застрял на компиляции моей первой программы =( . Они используют Visual Studio для программирования своего кода, а поскольку я использую macbook, я просто используйте vi и терминал (или я должен использовать что-то еще?)

Вот программа helloworld.cpp, которую я написал на основе учебника:

#include "stdafx.h"
#include <iostream>
{
     std::cout <<"Hello World!" <<std::end1;
     return 0;
}

когда я скомпилировал (gcc -Wall hello.cpp) я получаю ошибку:

helloworld.cpp:1:10: fatal error: 'stdafx.h' file not found

#include "stdafx.h"
         ^
1 error generated.

Кто-нибудь может дать мне понимание того, как это исправить?

3 ответа

  1. stdafx.h это предварительно скомпилированный заголовок, используемый Visual Studio, вам это не нужно.
  2. Вы, кажется, пропустили int main() функция
  3. это std::endl не std::end1

Так что-то вроде этого:

#include <iostream>
int main() {
     std::cout <<"Hello World!" <<std::endl;
     return 0;
}

stdafx.h это предварительно скомпилированный заголовочный файл, специфичный для Visual Studio. Файл скомпилированного заголовка бесполезен, если вы не столкнетесь с медленным временем компиляции. В вашей программе они вам вообще не нужны, так что вы можете удалить это, и все будет хорошо.

Вы можете догадаться, если это не нужно, то почему мы их включаем?

Я объясню это: всякий раз, когда мы добавляем заголовочные файлы (#include), Компилятор будет проходить через него, проверять его и затем компилировать заголовочный файл всякий раз, когда компилируется файл CPP.

Этот процесс повторяется для каждого файла CPP с включенным заголовочным файлом.

В случае, если у вас есть 1000 файлов CPP в проекте, который должен включать заголовочный файл xyz.h, компилятор скомпилирует xyz.h подать 1000 раз. это может занять заметное время.

Чтобы избежать этого, компилятор дает нам возможность "прекомпилировать" заголовочный файл, чтобы он компилировался только один раз, чтобы ускорить время компиляции.

Две проблемы: а) stdafx.h не нужен (как отмечали другие). б) "end1" должно быть "endl" (обратите внимание на букву "l" вместо числа "1").

Другие вопросы по тегам