Partilhar via


Erro do compilador C2857

A instrução '#include' especificada com a opção de linha de comando /Ycfilename não foi encontrada no arquivo de origem

Observações

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.

Quando você usa a opção de nome de arquivo/Yc em um arquivo de origem para criar um arquivo de cabeçalho pré-compilado (PCH), esse arquivo de origem deve incluir o arquivo de cabeçalho do nome do arquivo. Todos os ficheiros incluídos pelo ficheiro de origem, incluindo o nome do ficheiro especificado, são incluídos no ficheiro PCH. Em outros arquivos de origem compilados usando a opção de nome de arquivo/Yu para usar o arquivo PCH, uma inclusão de nome de arquivo deve ser a primeira linha sem comentário no arquivo. O compilador ignora qualquer coisa no ficheiro de origem antes desta inclusão.

Este erro pode ser causado por uma instrução #include "filename" num bloco de compilação condicional que não é compilado no seu ficheiro de origem PCH.

Example

No 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 em seu projeto, mas não cabeçalhos locais que ainda estão em desenvolvimento. Neste exemplo, o arquivo de cabeçalho PCH é chamado 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 deste arquivo de cabeçalho PCH, ele gera 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 este 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");
}