Megosztás a következőn keresztül:


C2857-ös fordítóhiba

Az /Ycfájlnév parancssori beállítással megadott "#include" utasítás nem található a forrásfájlban

Megjegyzések

Az /Yc beállítás egy olyan belefoglalási fájl nevét adja meg, amely nem szerepel a lefordított forrásfájlban.

Ha egy forrásfájl /Ycfájlnév beállításával hoz létre előre összeállított fejlécfájlt (PCH), a forrásfájlnak tartalmaznia kell a fájlnév fejlécfájlját. A forrásfájl által tartalmazott összes fájl, beleértve a megadott fájlnév is, szerepel a PCH-fájlban. Más forrásfájlokban, amelyeket a /Yufájlnév beállítással fordítottak a PCH-fájl használatára, a fájlnév beiktatásának a fájl első nem megjegyzés sorában kell lennie. A fordító figyelmen kívül hagy mindent a forrásfájlban az include utasítás előtt.

Ezt a hibát okozhatja egy #include "filename" olyan feltételes fordítási blokkban lévő utasítás, amely nem a PCH-forrásfájlban van lefordítva.

Example

Általában a projektben egy forrásfájl van kijelölve PCH-forrásfájlként, egy fejlécfájl pedig a PCH-fejlécfájlként. Egy tipikus PCH-fejlécfájl tartalmazza a projektben használt összes kódtárfejlécet, de a fejlesztés alatt álló helyi fejléceket nem. Ebben a példában a PCH fejlécfájl neve my_pch.h.

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

A PCH-forrásfájl fordítása az /Ycmy_pch.h lehetőséggel történik. Ha a fordító nem talál beillesztést erre a PCH-fejlécfájlra, akkor C2857-et hoz létre:

// 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

A PCH-fájl használatához a forrásfájlokat a /Yumy_pch.h beállítással kell lefordítani. A PCH fejlécfájlt először a PCH-t használó forrásfájlokban kell szerepeltetni:

// 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");
}