So vermeiden Sie vorkompilierte Header

71

Ich versuche, ein einfaches VS-Programm in C ++ als Aufgabe für die Klasse zu kompilieren. Wir schließen immer nur ein <iostream>und ich bekomme immer wieder diesen Fehler:

1> Assignment.cpp (15): Schwerwiegender Fehler C1010: Unerwartetes Dateiende bei der Suche nach vorkompiliertem Header. Haben Sie vergessen '#include "StdAfx.h"', Ihrer Quelle hinzuzufügen ?

Mein Programm ist buchstäblich so klein ...

#include <iostream>
using namespace std;
int main()
{
    unsigned int day = 30;

    cout << "My Name is John Doe" << endl;
    cout << "My Major is CS" << endl;
    cout << "I was born on day " << day << endl;
    return 0;
}

Ich habe gerade Visual Studio Express 2010 installiert. Ich würde wirklich gerne ein leeres Projekt starten, anstatt es mit all diesen vordefinierten Dateien zu installieren. Ich denke, es würde es viel einfacher machen, aber ich bekomme diese Option beim Erstellen eines Projekts nie. Hat jemand irgendwelche Vorschläge?

Howdy_McGee
quelle
11
Sie müssen die Verwendung vorkompilierter Header in den Einstellungen Ihres Projekts deaktivieren (Sie können auch die Option Vorkompilierte Header verwenden deaktivieren, wenn Sie in Zukunft neue Projekte erstellen.)
user168715
Wie schalte ich dies für zukünftige Projekte aus?
Howdy_McGee
Bitte verbessern Sie Ihren Fragentitel. Es beschreibt die Frage nicht sehr willens, sondern listet Technologien auf (wofür Tags sind).
Leichtigkeitsrennen im Orbit
Ich habe Projekteigenschaften, sehe aber keine vorkompilierten Header. Es ist in Spracheigenschaften?
Howdy_McGee
2
Suchen Sie unter C / C ++ -> Vorkompilierte Header.
user168715

Antworten:

101

Sie können die Verwendung vorkompilierter Header in den Projekteinstellungen jederzeit deaktivieren.

Anweisungen für VS 2010 (sollte für andere Versionen von VS ähnlich sein):

Wählen Sie Ihr Projekt aus, verwenden Sie das Menü "Projekt -> Eigenschaften" und gehen Sie zum Abschnitt "Konfigurationseigenschaften -> C / C ++ -> Vorkompilierte Header". Ändern Sie dann die Einstellung "Vorkompilierter Header" in "Keine vorkompilierten Header verwenden".


Wenn Sie nur versuchen, ein minimales Visual Studio-Projekt für einfache C ++ - Befehlszeilenprogramme einzurichten (z. B. solche, die in einführenden C ++ - Programmierklassen entwickelt wurden), können Sie ein leeres C ++ - Projekt erstellen .

André Caron
quelle
2
@ Howdy_McGee std::cout << "Press Enter To Continue" << std::endl; std::cin.get();sollte dich dorthin bringen.
Tom Kerr
1
@ André: Die Vorlagen 'Win32 Project' und 'Win32 Console Application' bieten auch die Möglichkeit, vorkompilierte Header zu deaktivieren. Auf jeden Fall war mein Punkt, dass es irreführend ist, die Einhaltung von Standards überhaupt anzusprechen, da sein Problem mit vorkompilierten Headern zusammenhängt und vorkompilierte Header orthogonal zur Einhaltung von Standards sind.
ildjarn
2
@ildjarn: aber das Problem betrifft nicht vorkompilierte Header. Das eigentliche Problem besteht darin, dass OP im Dialogfeld des Projektassistenten den falschen Projekttyp und / oder die falschen Optionen ausgewählt hat. Da OP Schulaufgaben in scheinbar einfachem Standard-C ++ schreibt, ist der Projekttyp der Projekttyp, der am besten dazu beiträgt, gute Gewohnheiten für das Schreiben standardkonformer C ++ - Programme in Visual Studio zu entwickeln. Daher meine Erwähnung der Einhaltung von Standards.
André Caron
2
@ André: traits::eof()wirklich nicht -1.
Leichtigkeitsrennen im Orbit
1
Der Tooltip von Downovote lautet: " Diese Antwort ist nicht nützlich ". Das ist natürlich relativ. Außerdem kann die Abstimmung jederzeit rückgängig gemacht werden. Vielen Dank für die Verbesserung der Antwort.
Tomáš Zato - Wiedereinsetzung Monica
9

Sie können ein leeres Projekt erstellen, indem Sie "Leeres Projekt" aus der Gruppe "Allgemein" von Visual C ++ - Projekten auswählen (möglicherweise ist diese Projektvorlage nicht in Express enthalten?).

Um das Problem in dem bereits vorhandenen Projekt zu beheben, öffnen Sie die Projekteigenschaften und navigieren Sie zu:

Configuration Properties | C/C++ | Precompiled Headers

Und wählen Sie "Vorkompilierte Header nicht verwenden" für die Option "Vorkompilierter Header".

Michael Burr
quelle
Laut msdn.microsoft.com/en-us/library/ms235516%28v=VS.100%29.aspx befindet sich die Vorlage für leeres Projekt in Express. Lassen Sie mich wissen, wenn es für Sie nicht angezeigt wird. Ich finde es besser als alle anderen Projektvorlagen, ein schnelles, schmutziges, kleines, in sich geschlossenes Testprojekt einzurichten.
Michael Burr
5

Die .cppDatei ist für die Verwendung vorkompilierter Header konfiguriert und muss daher zuerst (vor iostream) eingefügt werden. Für Visual Studio lautet der Name normalerweise "stdafx.h".

Wenn Ihr Projekt keine stdafx * -Dateien enthält, müssen Sie zu den Optionen dieser Datei gehen und sie als "Keine vorkompilierten Header verwenden" festlegen.

Hamstergen
quelle
Wie schalte ich die vordefinierten Header aus?
Howdy_McGee
Klicken Sie mit der rechten Maustaste auf die CPP-Datei und wählen Sie Eigenschaften. Suchen Sie dann C / C ++ / Vorkompilierte Header in der Baumansicht und ändern Sie die Option Vorkompilierter Header.
Hamstergene
Praktisch ist auch die Option Massenauswahl <STRG> + Linke Maus. Wählen Sie im Projektmappen-Explorer eine Reihe von CPP- Quelldateien aus und deaktivieren Sie sie wie oben beschrieben.
Laurie Stearn
-1

versuche #include "stdafx.h"vorher hinzuzufügen#include "iostream"

SergeyT
quelle
Es ist eine Klassenaufgabe - ich darf nur iostream verwenden, damit diese Lösung nicht funktioniert
Howdy_McGee
1
@ Howdy: Nun, technisch gesehen ist Sergey korrekt. Sie haben ein Projektset erstellt, um einen vorkompilierten Header zu verwenden, aber Sie tun es nicht #include. Was Sie wirklich tun müssen, ist ein leeres Projekt zu erstellen oder die Abhängigkeit von vorkompilierten Headern zu beseitigen.
Ed S.
@Ed S.: Obwohl es korrekt ist, behebt es nur das Symptom. Die versteckte Frage lautet: "Warum kann ich nicht dasselbe Programm kompilieren, das ich in der Klasse kompiliert habe?" Die Antwort auf diese Frage lautet: "In der Klasse hat das Projekt keinen vorkompilierten Header verwendet."
André Caron
-1

Klicken Sie mit der rechten Maustaste auf die Projektlösung

Eigenschaften -> Konfigurationseigenschaften -> C / C ++ -> Vorkompilierte Header

  1. Klicken Sie auf "Vorkompilierte Header" und wechseln Sie zu "Vorkompilierte Header nicht verwenden".

  2. Löschen Sie das Feld "pch.h" / "stdafx.h" in "Precompiled Header File" für den EOF-Fehler am Ende des Builds für das Projekt.

  3. Dann können Sie die Seite löschen. / stdafx. Dateien in Ihrem Projekt

Someidiotontheweb
quelle