Kompilatorfel C2857

Instruktionen "#include" som angavs med kommandoradsalternativet /Yc-filnamn hittades inte i källfilen

Anmärkningar

Alternativet /Yc anger namnet på en inkluderingsfil som inte ingår i källfilen som kompileras.

När du använder filnamnsalternativet/Yc på en källfil för att skapa en fördefinierad sidhuvudfil (PCH) måste källfilen innehålla filnamnshuvudfilen. Varje fil som ingår i källfilen, upp till och med det angivna filnamnet, ingår i PCH-filen. I andra källfiler som kompilerats med hjälp av filnamnsalternativet/Yu för att använda PCH-filen måste filnamnet vara den första icke-kommentarsraden i filen. Kompilatorn ignorerar allt i källfilen innan detta inkluderas.

Det här felet kan orsakas av en #include "filename" instruktion i ett villkorligt kompileringsblock som inte kompileras i PCH-källfilen.

Example

I vanlig användning betecknas en källfil i projektet som PCH-källfilen och en huvudfil används som PCH-huvudfil. En typisk PCH-huvudfil har alla bibliotekshuvudfiler som används i ditt projekt, men inte lokala huvudfiler som fortfarande är under utveckling. I det här exemplet heter PCH-huvudfilen my_pch.h.

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

PCH-källfilen kompileras med hjälp av alternativet /Ycmy_pch.h . Om kompilatorn inte hittar någon inkludering av den här PCH-huvudfilen genererar den C2857:

// 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

Om du vill använda den här PCH-filen måste källfilerna kompileras med hjälp av alternativet /Yumy_pch.h . PCH-huvudfilen måste inkluderas först i källfilerna som använder PCH:

// 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");
}