Поделиться через


/reference (Используйте именованный модуль IFC)

Указывает компилятору использовать существующий IFC (.ifc) для текущей компиляции.

Синтаксис

/reference module-name=filename
/reference filename

Аргументы

filename
Имя файла, содержащего данные IFC, предварительно созданные сведения о модуле. Чтобы импортировать несколько модулей, включите отдельный /reference параметр для каждого файла.

module-name
Допустимое имя экспортированного имени блока основного интерфейса модуля или полного имени секции модуля.

Замечания

В большинстве случаев этот параметр не требуется указывать, так как система проектов автоматически обнаруживает зависимости модулей в решении.

Параметр /reference компилятора требует включения /std:c++20 или более поздней версии параметра компилятора (например /std:c++latest). Этот /reference параметр доступен начиная с Visual Studio 2019 версии 16.10.

/reference Если аргумент является безmodule-name, файл открывается filename во время выполнения, чтобы проверить filename имена аргументов определенного импорта. Это может привести к снижению производительности среды выполнения в сценариях с большим количеством /reference аргументов.

Он module-name должен быть допустимым именем основного модуля или полным именем секции модуля. Ниже приведены примеры имен основных интерфейсов модуля:

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

Ниже приведены примеры полных имен секций модулей:

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

Если ссылка на модуль создается с помощью module-nameмодуля, другие модули в командной строке не получают поиска, если компилятор обнаруживает импорт этого имени. Например, учитывая эту командную строку:

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

В приведенном выше случае, если компилятор видит import m; , m.ifc то поиск не выполняется.

Примеры

Учитывая три модуля, как указано в этой таблице:

Модуль ФАЙЛ IFC
M m.ifc
M:Part1 m-part1.ifc
Core.Networking Networking.ifc

Параметры ссылки, использующие filename аргумент, будут следующими:

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

Параметры ссылок, которые используются module-name=filename , будут следующими:

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

См. также

/scanDependencies (Перечисление зависимостей модуля в стандартной форме)
/sourceDependencies:directives (список зависимостей в header-unit и модулях)
/headerUnit (использование IFC для единицы заголовка)
/exportHeader (создание единиц заголовков)