module, , importexport

De module, import en export-declaraties zijn beschikbaar in C++20 en vereisen de compilerswitch /std:c++20 of hoger. Zie Overzicht van modules in C++voor meer informatie.

module

Plaats een module declaratie aan het begin van een module-implementatiebestand om op te geven dat de bestandsinhoud deel uitmaakt van de benoemde module.

module ModuleA;

export

Gebruik een export module declaratie voor het primaire interfacebestand van de module, dat standaard een extensie .ixx heeft. Als u een andere extensie wilt gebruiken, gebruikt u de /interface switch om deze te compileren als moduleinterface.

export module ModuleA;

Gebruik in een interfacebestand de export wijzigingsfunctie voor namen die deel uitmaken van de openbare interface:

// ModuleA.ixx

export module ModuleA;

namespace ModuleA_NS
{
   export int f();
   export double d();
   double internal_f(); // not exported
}

Niet-uitgevoerde namen zijn niet zichtbaar voor code waarmee de module wordt geïmporteerd:

import ModuleA;

int main() {
  ModuleA_NS::f(); // OK
  ModuleA_NS::d(); // OK
  ModuleA_NS::internal_f(); // Ill-formed: error C2065: 'internal_f': undeclared identifier
}

Het export trefwoord wordt mogelijk niet weergegeven in een module-implementatiebestand. Wanneer export deze wordt toegepast op een naamruimtenaam, worden alle namen in de naamruimte geëxporteerd.

import

Gebruik een import declaratie om de namen van een module zichtbaar te maken in uw programma. De import aangifte moet na de module declaratie en na eventuele #include instructies worden weergegeven, maar vóór eventuele declaraties in het bestand.

module ModuleA;

#include "custom-lib.h"
import std;
import myModule;

// begin declarations here:
template <class T>
class Baz
{...};

Opmerkingen

Beide import en module worden alleen behandeld als trefwoorden wanneer ze worden weergegeven aan het begin van een logische regel:

// OK:
module ;
module module-name
import :
import <
import "
import module-name
export module ;
export module module-name
export import :
export import <
export import "
export import module-name

// Error:
int i; module ;

Microsoft-specifieke

In Microsoft C++ zijn de tokens import en module altijd identificatoren en nooit trefwoorden wanneer ze worden gebruikt als argumenten voor een macro.

Voorbeeld

#define foo(...) __VA_ARGS__
foo(
import // Always an identifier, never a keyword
)

Microsoft-specifiek beëindigen

Zie ook

Overzicht van modules in C++
De C++-standaardbibliotheek importeren met behulp van modules