Configuration requise du préprocesseur C pour MIDL

Cette page s’applique uniquement aux développeurs qui ont des raisons spécifiques de remplacer le préprocesseur Microsoft C/C++ comme préprocesseur utilisé par MIDL, ou aux développeurs qui doivent spécifier des commutateurs de préprocesseur personnalisés. Les commutateurs MIDL /cpp_cmd, /cpp_opt et /no_cpp sont utilisés pour remplacer le comportement par défaut du compilateur. Il n’y a généralement aucune raison de remplacer le préprocesseur Microsoft C/C++, ni de spécifier des commutateurs de préprocesseur personnalisés.

Le compilateur MIDL utilise un préprocesseur C pendant le traitement initial du fichier IDL. L’environnement de génération utilisé lors de la compilation des fichiers IDL est associé à un préprocesseur C/C++ par défaut. Si un autre préprocesseur doit être utilisé, le commutateur du compilateur MIDL /cpp_cmd permet de remplacer le nom du préprocesseur C/C++-par défaut :

midl /cpp_cmd preprocessor_name filename

preprocessor_name

Spécifie le nom du préprocesseur à utiliser par MIDL. Peut être spécifié avec un chemin d’accès au binaire. L’extension .exe est facultative.

Fichier

Spécifie le nom du fichier IDL.

  • Le compilateur MIDL s’attend à ce que tout préprocesseur respecte les conventions suivantes :
  • Le fichier d’entrée est spécifié comme dernier argument sur la ligne de commande.
  • Le préprocesseur doit rediriger la sortie vers le périphérique de sortie standard, stdout.
  • Dans le flux de sortie du préprocesseur, les directives #line sont présentes pour activer de meilleurs messages de diagnostic.
  • Les directives de ligne sont les seules directives de préprocesseur dans le flux de sortie.

MIDL suppose que le préprocesseur généré a supprimé toutes les directives de préprocesseur du flux d’entrée du compilateur, à l’exception des occurrences de la directive de ligne nécessaires pour identifier l’emplacement source dans les messages du compilateur. Lorsque vous indiquez un préprocesseur différent du préprocesseur Microsoft C/C++, ou lorsque vous spécifiez des options de préprocesseur avec le commutateur /cpp_opt , il est nécessaire de spécifier une option de préprocesseur appropriée qui place les directives de ligne dans le flux d’entrée du compilateur. Par exemple, pour le préprocesseur Microsoft C/C++, l’option /E doit être utilisée :

midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl

La directive #line est acceptée par MIDL sous l’une des formes suivantes :

#line digit-sequence "filename" new-line
 
# digit-sequence "filename" new-line

Pour obtenir une description complète de la directive de ligne et d’autres directives de préprocesseur, consultez la documentation du compilateur C utilisé.

MIDL accepte uniquement la directive de préprocesseur de ligne. Par conséquent, si le commutateur /no_cpp est utilisé, le fichier d’entrée ne doit pas avoir d’autres directives de préprocesseur, ou le fichier d’entrée doit avoir été traité avant d’appeler MIDL.

Pour plus d’informations, consultez Gestion des #defines dans les fichiers IDL.