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_optet /no_cpp sont utilisés pour remplacer le comportement par défaut du compilateur. Il n’existe 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 active une substitution du nom de 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 fichier binaire. L’extension .exe est facultative.
-
nom de fichier
-
Spécifie le nom du fichier IDL.
- Le compilateur MIDL s’attend à ce que tout préprocesseur observe 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 l’appareil de sortie standard, stdout.
- Dans le flux de sortie du préprocesseur, les directives #line sont présentes pour permettre 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, en spécifiant une option de préprocesseur appropriée qui place les directives de ligne dans le flux d’entrée du compilateur est requise. 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 relative à l’utilisation du compilateur C.
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.