Condividi tramite


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_opt e /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 durante la compilazione dei file IDL è associato a un preprocessore C/C++ predefinito. Se deve essere usato un preprocessore diverso, l'opzione /cpp_cmd del compilatore MIDL abilita un override del nome predefinito del preprocessore C/C++:

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.

Filename

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, le direttive #line sono presenti 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 line 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 , è necessario specificare un'opzione del preprocessore appropriata che inserisce le direttive di riga nel flusso di input del compilatore. Ad esempio, per il preprocessore Microsoft C/C++ l'opzione /E deve essere usata:

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.