Compartilhar via


/reference (Use o módulo nomeado IFC)

Informa ao compilador para usar um IFC existente (.ifc) na compilação atual.

Sintaxe

/reference module-name=filename
/reference filename

Argumentos

filename
O nome de um arquivo que contém dados IFC, que são informações de módulo predefinidas. Para importar mais de um módulo, inclua uma opção /reference separada para cada arquivo.

module-name
Um nome válido de unidade de interface do módulo primário exportado ou o nome completo da partição do módulo.

Comentários

Na maioria dos casos, você não precisará especificar essa opção porque o sistema de projeto descobre dependências de módulo em uma solução automaticamente.

A opção do compilador /reference exige que você habilite a opção do compilador /std:c++20 ou posterior (como /std:c++latest). A opção /reference está disponível a partir do Visual Studio 2019 versão 16.10.

Se o argumento /reference for um filename sem um module-name, o arquivo será aberto em runtime para verificar se o argumento filename nomeia uma importação específica. Isso pode resultar em um desempenho de runtime mais lento em cenários que têm muitos argumentos /reference.

O module-name deve ser o nome válido de uma unidade de interface do módulo primário ou o nome completo da partição do módulo. Exemplos de nomes de interface de módulo primário incluem:

  • M
  • M.N.O
  • MyModule
  • my_module

Exemplos de nomes completos de partição de módulo incluem:

  • M:P
  • M.N.O:P.Q
  • MyModule:Algorithms
  • my_module:algorithms

Se uma referência de módulo for criada usando um module-name, outros módulos na linha de comando não serão pesquisados se o compilador encontrar uma importação desse nome. Por exemplo, considerando esta linha de comando:

cl ... /std:c++latest /reference m.ifc /reference m=n.ifc

No caso acima, se o compilador vir import m;, m.ifc não será pesquisado.

Exemplos

Considerando os três módulos conforme listado nesta tabela:

Módulo Arquivo IFC
M m.ifc
M:Part1 m-part1.ifc
Core.Networking Networking.ifc

As opções de referência ao usar um argumento filename seriam assim:

cl ... /std:c++latest /reference m.ifc /reference m-part.ifc /reference Networking.ifc

As opções de referência ao usar module-name=filename seriam assim:

cl ... /std:c++latest /reference m=m.ifc /reference M:Part1=m-part.ifc /reference Core.Networking=Networking.ifc

Confira também

/scanDependencies (listar dependências do módulo no formato padrão)
/sourceDependencies:directives (Listar dependências de unidade de módulo e cabeçalho)
/headerUnit (Usar IFC da unidade de cabeçalho)
/exportHeader (Criar unidades de cabeçalho)