Freigeben über


Compilerfehler C2857

Die mit der Befehlszeilenoption /Ycfilename angegebene „#include“-Anweisung konnte in der Quelldatei nicht gefunden werden

Hinweise

Die Option "/Yc " gibt den Namen einer Includedatei an, die nicht in der kompilierten Quelldatei enthalten ist.

Wenn Sie die Dateinameoption "/Yc" für eine Quelldatei verwenden, um eine vorkompilierte Headerdatei (PCH) zu erstellen, muss diese Quelldatei die Dateinamenheaderdatei enthalten. Jede Datei, die von der Quelldatei enthalten ist, bis zum angegebenen Dateinamen, ist in der PCH-Datei enthalten. In anderen Quelldateien, die mithilfe der Option "/Yufilename" kompiliert wurden, um die PCH-Datei zu verwenden, muss ein Include des Dateinamens die erste Zeile ohne Kommentar in der Datei sein. Der Compiler ignoriert alles in der Quelldatei, bevor dies eingeschlossen wird.

Dieser Fehler kann durch eine #include "filename" Anweisung in einem bedingten Kompilierungsblock verursacht werden, der nicht in der PCH-Quelldatei kompiliert wird.

Beispiel

In der typischen Verwendung wird eine Quelldatei in Ihrem Projekt als PCH-Quelldatei festgelegt, und eine Headerdatei wird als PCH-Headerdatei verwendet. Eine typische PCH-Headerdatei enthält alle Bibliotheksheader, die in Ihrem Projekt verwendet werden, aber keine lokalen Header, die noch in der Entwicklung sind. In diesem Beispiel heißt die PCH-Headerdatei my_pch.h.

// my_pch.h
#pragma once
#include <stdio.h>

Die PCH-Quelldatei wird mithilfe der Option "/Ycmy_pch.h " kompiliert. Wenn der Compiler keinen Include dieser PCH-Headerdatei findet, wird C2857 generiert:

// my_pch.cpp
// Compile by using: cl /EHsc /W4 /Yumy_pch.h /c my_pch.cpp

#if 0
#include "my_pch.h"  // C2857; remove conditional directives to fix
#endif

Um diese PCH-Datei zu verwenden, müssen Quelldateien mithilfe der Option "/Yumy_pch.h " kompiliert werden. Die PCH-Headerdatei muss zuerst in Quelldateien enthalten sein, die den PCH verwenden:

// C2857.cpp
// Compile my_pch.cpp first, then
// compile by using: cl /EHsc /W4 /Yumy_pch.h my_project.cpp my_pch.obj
// Include the pch header before any other non-comment line
#include "my_pch.h"

int main()
{
    puts("Using a precompiled header file.\n");
}