Erro do compilador C2857
instrução “#include” especificada com a opção de linha de comando /Ycfilename não foi encontrada no arquivo de origem
A opção /Yc especifica o nome de um arquivo de inclusão que não está incluído no arquivo de origem que está sendo compilado.
Comentários
Quando você usa a opção de /Ycfilename em um arquivo de origem para criar um arquivo PCH (cabeçalho pré-compilado), esse arquivo de origem deve incluir o arquivo de cabeçalho do filename. Cada arquivo incluído pelo arquivo de origem, até o filename especificado, inclusive, está incluído no arquivo PCH. Em outros arquivos de origem compilados usando a opção /Yufilename para usar o arquivo PCH, uma inclusão de filename deve ser a primeira linha sem comentário no arquivo. O compilador ignora qualquer coisa no arquivo de origem antes dessa inclusão.
Esse erro pode ser causado por uma instrução #include "filename"
em um bloco de compilação condicional que não é compilado no arquivo de origem PCH.
Exemplo
Em um uso típico, um arquivo de origem em seu projeto é designado como o arquivo de origem PCH, e um arquivo de cabeçalho é usado como o arquivo de cabeçalho PCH. Um arquivo de cabeçalho PCH típico tem todos os cabeçalhos de biblioteca usados no seu projeto, mas não tem cabeçalhos locais que ainda estão em desenvolvimento. Neste exemplo, o arquivo de cabeçalho PCH é nomeado my_pch.h.
// my_pch.h
#pragma once
#include <stdio.h>
O arquivo de origem PCH é compilado usando a opção /Ycmy_pch.h. Se o compilador não encontrar uma inclusão desse arquivo de cabeçalho PCH, ele gerará um 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
Para usar esse arquivo PCH, os arquivos de origem devem ser compilados usando a opção /Yumy_pch.h . O arquivo de cabeçalho PCH deve ser incluído primeiro nos arquivos de origem que usam o 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");
}