Errore del compilatore C2857
Istruzione '#include' specificata con l'opzione della riga di comando /Ycfilename non trovata nel file di origine
L'opzione /Yc specifica il nome di un file di inclusione non incluso nel file di origine da compilare.
Osservazioni:
Quando si usa l'opzione /Ycfilename in un file di origine per creare un file di intestazione precompilato (PCH), tale file di origine deve includere il file di intestazione del nome file . Ogni file incluso dal file di origine, fino a e includendo il nome file specificato, è incluso nel file PCH. In altri file di origine compilati usando l'opzione /Yufilename per usare il file PCH, un file di inclusione deve essere la prima riga non di commento nel file. Il compilatore ignora qualsiasi elemento nel file di origine prima dell'inclusione.
Questo errore può essere causato da un'istruzione #include "filename"
in un blocco di compilazione condizionale non compilato nel file di origine PCH.
Esempio
Nell'utilizzo tipico, un file di origine nel progetto viene designato come file di origine PCH e un file di intestazione viene usato come file di intestazione PCH. Un tipico file di intestazione PCH include tutte le intestazioni di libreria usate nel progetto, ma non le intestazioni locali ancora in fase di sviluppo. In questo esempio il file di intestazione PCH è denominato my_pch.h.
// my_pch.h
#pragma once
#include <stdio.h>
Il file di origine PCH viene compilato usando l'opzione /Ycmy_pch.h . Se il compilatore non trova un'inclusione di questo file di intestazione PCH, genera l'errore 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
Per usare questo file PCH, i file di origine devono essere compilati usando l'opzione /Yumy_pch.h . Il file di intestazione PCH deve essere incluso per primo nei file di origine che usano 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");
}