Partager via


Erreur du compilateur C2857

L'instruction '#include' spécifiée avec l'option de ligne de commande /Ycfilename n'a pu être trouvée dans le fichier source

L’option /Yc spécifie le nom d’un fichier include qui n’est pas inclus dans le fichier source en cours de compilation.

Notes

Lorsque vous utilisez l’option de nom de fichier /Ycsur un fichier source pour créer un fichier d’en-tête précompilé (PCH), ce fichier source doit inclure le fichier d’en-tête du nom de fichier. Chaque fichier inclus par le fichier source, jusqu’à et y compris le nom de fichier spécifié, est inclus dans le fichier PCH. Dans d’autres fichiers sources compilés à l’aide de l’option /Yufilename pour utiliser le fichier PCH, un fichier include de nom de fichier doit être la première ligne de non-commentaire dans le fichier. Le compilateur ignore tout ce qui se trouve dans le fichier source avant d’inclure ce fichier.

Cette erreur peut être due à une #include "filename" instruction dans un bloc de compilation conditionnel qui n’est pas compilé dans votre fichier source PCH.

Exemple

Dans une utilisation classique, un fichier source dans votre projet est désigné comme fichier source PCH et un fichier d’en-tête est utilisé comme fichier d’en-tête PCH. Un fichier d’en-tête PCH classique contient tous les en-têtes de bibliothèque utilisés dans votre projet, mais pas les en-têtes locaux qui sont toujours en cours de développement. Dans cet exemple, le fichier d’en-tête PCH est nommé my_pch.h.

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

Le fichier source PCH est compilé à l’aide de l’option /Ycmy_pch.h . Si le compilateur ne trouve pas d’inclure ce fichier d’en-tête PCH, il génère l’erreur 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

Pour utiliser ce fichier PCH, les fichiers sources doivent être compilés à l’aide de l’option /Yumy_pch.h . Le fichier d’en-tête PCH doit être inclus en premier dans les fichiers sources qui utilisent le 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");
}