Include stdafx h ошибка

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

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

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

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

Решение

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

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

Другие решения

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

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

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

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

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

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

Читайте также:  Эффективная работа в excel

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

В visual studio C++, при создании нового проекта, вместо #include (как в примерах) стоит #include . Если его заменить на #include , то получается ошибка компиляции.

Можно это как-то изменить?

2 ответа 2

Это особенность Visual Studio, которая может ускорять сборку проекта. Начинающих только сбивает с толку. Рекомендую её просто отключить, только и всего. Тогда все будет работать как по учебнику.

Для этого зайдите в свойства проекта (правая кнопка по проекту в solution explorer, properties) и в Precompiled Headers отключите их как показано на рисунке:

Visual Studio использует #include для реализации предкомпилированных заголовков — то есть, для ускорения компиляции. #include должно быть первой существенной строкой файла (то есть, непустой и не комментарием).

Если вам нужно указать #include , укажите его следующей строкой.

Я бы не рекомендовал отказываться от #include и предкомпилированных заголовков. Правильное использование предкомпилированных заголовков улучшает время компиляции, особенно в больших проектах.

Как исправить ошибку «stdio.h: No such file or directory »?

Понять почему она возникает:
— запустить компиляцию с опцией -v: gcc -v helloworld.c -o helloworld
— найти в выводе строки