Sdílet prostřednictvím


module, import, export

Příkazy module, importa export deklarace jsou k dispozici v jazyce C++20 a vyžadují přepínač kompilátoru /experimental:module spolu s /std:c++20 nebo novějším (například /std:c++latest). Další informace naleznete v tématu Přehled modulů v jazyce C++.

module

module Umístěte deklaraci na začátek souboru implementace modulu, abyste určili, že obsah souboru patří do pojmenovaného modulu.

module ModuleA;

export

export module Použijte deklaraci pro soubor primárního rozhraní modulu, který musí mít příponu.ixx:

export module ModuleA;

V souboru rozhraní použijte export modifikátor názvů, které mají být součástí veřejného rozhraní:

// ModuleA.ixx

export module ModuleA;

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

Neexportované názvy nejsou viditelné pro kód, který importuje modul:

//MyProgram.cpp

import ModuleA;

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

Klíčové export slovo se nemusí objevit v souboru implementace modulu. Pokud export se použije na název oboru názvů, exportují se všechny názvy v oboru názvů.

import

import Pomocí deklarace můžete v programu zobrazit názvy modulů. Deklarace import musí být uvedena module za prohlášením a za všemi #include direktivami, ale před všemi deklaracemi v souboru.

module ModuleA;

#include "custom-lib.h"
import std.core;
import std.regex;
import ModuleB;

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

Poznámky

Obě import a module jsou považovány za klíčová slova pouze v okamžiku, kdy se zobrazí na začátku logického řádku:

// 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 ;

Specifické pro Microsoft

V Jazyce Microsoft C++ jsou tokeny a module vždy identifikátory import a nikdy klíčová slova, pokud se používají jako argumenty makra.

Příklad

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

Ukončit konkrétní microsoft

Viz také

Přehled modulů v jazyce C++