Requisiti del preprocessore C per MIDL
Questa pagina si applica solo agli sviluppatori che hanno motivi specifici per sostituire il preprocessore Microsoft C/C++ come preprocessore usato da MIDL o agli sviluppatori che devono specificare opzioni del preprocessore personalizzate. Le opzioni MIDL /cpp_cmd, /cpp_opte /no_cpp vengono usate per eseguire l'override del comportamento predefinito del compilatore. In genere non esiste alcun motivo per sostituire il preprocessore Microsoft C/C++, né per specificare opzioni del preprocessore personalizzate.
Il compilatore MIDL usa un preprocessore C durante l'elaborazione iniziale del file IDL. L'ambiente di compilazione usato per la compilazione dei file IDL è associato a un preprocessore C/C++ predefinito. Se è necessario usare un preprocessore diverso, l'opzione del compilatore MIDL /cpp_cmd abilita un override del nome C/C++-preprocessore predefinito:
midl /cpp_cmd preprocessor_name filename
-
preprocessor_name
-
Specifica il nome del preprocessore da utilizzare da MIDL. Può essere specificato con un percorso del file binario. L'estensione .exe è facoltativa.
-
nome file
-
Specifica il nome del file IDL.
- Il compilatore MIDL prevede che qualsiasi preprocessore osservi le convenzioni seguenti:
- Il file di input viene specificato come ultimo argomento nella riga di comando.
- Il preprocessore deve reindirizzare l'output al dispositivo di output standard, stdout.
- Nel flusso di output del preprocessore sono presenti le direttive #line per abilitare messaggi di diagnostica migliori.
- Le direttive line sono le uniche direttive del preprocessore nel flusso di output.
MIDL presuppone che il preprocessore generato abbia rimosso tutte le direttive del preprocessore dal flusso di input del compilatore, ad eccezione delle occorrenze della direttiva di riga necessaria per individuare il percorso di origine nei messaggi del compilatore. Quando si indica un preprocessore diverso dal preprocessore Microsoft C/C++ o quando si specificano le opzioni del preprocessore con l'opzione /cpp_opt, specificando un'opzione del preprocessore appropriata che inserisce le direttive di riga nel flusso di input del compilatore è obbligatoria. Ad esempio, per il preprocessore Microsoft C/C++ è necessario usare l'opzione /E:
midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl
La direttiva #line è accettata da MIDL in una delle seguenti forme:
#line digit-sequence "filename" new-line
# digit-sequence "filename" new-line
Per una descrizione completa della direttiva line e di altre direttive del preprocessore, vedere la documentazione relativa all'uso del compilatore C.
MIDL accetta solo la direttiva del preprocessore di riga. Pertanto, se viene usata l'opzione /no_cpp, il file di input non deve avere altre direttive del preprocessore oppure il file di input deve essere stato elaborato prima di richiamare MIDL.
Per altre informazioni, vedere Gestione delle #defines nei file IDL.