Error del compilador C2857
no se encontró la instrucción "#include" especificada con la opción de la línea de comandos /Ycfilename en el archivo de código fuente
La opción /Yc especifica el nombre de un archivo de inclusión que no está incluido en el archivo de código fuente que se está compilando.
Comentarios
Cuando se usa la opción /Ycnombre_de_archivo en un archivo de código fuente para crear un archivo de encabezado precompilado (PCH), ese archivo de código fuente debe incluir el archivo de encabezado nombre_de_archivo. Todos los archivos incluidos por el archivo de código fuente hasta el nombre_de_archivo especificado se incluyen en el archivo PCH. En otros archivos de código fuente compilados con la opción /Yunombre_de_archivo para usar el archivo PCH, una inclusión de nombre_de_archivo debe ser la primera línea del archivo que no sea un comentario. El compilador ignora cualquier elemento del archivo de código fuente antes de esta inclusión.
Este error puede deberse a una instrucción #include "filename"
en un bloque de compilación condicional que no se compila en el archivo de código fuente PCH.
Ejemplo
En el uso típico, se designa un archivo de código fuente del proyecto como archivo de código fuente PCH y se usa un archivo de encabezado como archivo de encabezado PCH. Un archivo de encabezado PCH típico tiene todos los encabezados de biblioteca que se usan en el proyecto, pero no los encabezados locales que todavía están en desarrollo. En este ejemplo, el archivo de encabezado PCH se denomina my_pch.h.
// my_pch.h
#pragma once
#include <stdio.h>
El archivo de código fuente PCH se compila con la opción /Ycmy_pch.h. Si el compilador no encuentra una inclusión de este archivo de encabezado PCH, genera la advertencia 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 archivo PCH, los archivos de código fuente deben compilarse con la opción /Yumy_pch.h. El archivo de encabezado PCH debe incluirse primero en los archivos de código fuente que usan el 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");
}