Sdílet prostřednictvím


Chyba kompilátoru C2857

Příkaz #include zadaný s parametrem příkazového řádku /Yc nebyl ve zdrojovém souboru nalezen.

Poznámky

Možnost /Yc určuje název zahrnutého souboru, který není součástí kompilovaného zdrojového souboru.

Pokud použijete možnost /Ycnázev souboru ve zdrojovém souboru k vytvoření předkompilovaného souboru hlavičky (PCH), musí tento zdrojový soubor obsahovat soubor hlavičky názvu souboru. Každý soubor, který je součástí zdrojového souboru, včetně zadaného názvu souboru, je součástí souboru PCH. V jiných zdrojových souborech kompilovaných pomocí možnosti /Yunázev souboru pro použití souboru PCH musí být zahrnutí názvu souboru prvním řádkem bez komentáře v souboru. Kompilátor před zahrnutím ignoruje cokoli ve zdrojovém souboru.

Příčinou této chyby může být #include "filename" příkaz v bloku podmíněné kompilace, který není zkompilován ve zdrojovém souboru PCH.

Příklad

V typickém použití je jeden zdrojový soubor v projektu označený jako zdrojový soubor PCH a jeden hlavičkový soubor se používá jako soubor hlaviček PCH. Typický soubor hlaviček PCH obsahuje všechny hlavičky knihovny používané v projektu, ale ne místní hlavičky, které jsou stále ve vývoji. V tomto příkladu má hlavičkový soubor PCH název my_pch.h.

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

Zdrojový soubor PCH se kompiluje pomocí možnosti /Ycmy_pch.h . Pokud kompilátor nenajde zahrnutí tohoto souboru hlaviček PCH, vygeneruje 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

Chcete-li použít tento soubor PCH, musí být zdrojové soubory zkompilovány pomocí možnosti /Yumy_pch.h . Soubor hlaviček PCH musí být nejprve součástí zdrojových souborů, které používají 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");
}